How can I check if a cell is empty using RubyXL?

I’m trying to check if a cell is empty because when the parser reaches an empty cell it throws NoMethodError (undefined methodvalue’ for nil:NilClass)`

This is what I was trying to do:

1.upto(inventory[0].sheet_data.size) do |line|
      @projectCode = inventory[0][line][1].value unless inventory[0][line][1].value.nil?
      @ProjectName = inventory[0][line][2].value unless inventory[0][line][2].value.nil?
end

also tried

1.upto(inventory[0].sheet_data.size) do |line|
      @projectCode = inventory[0][line][1].value unless inventory[0][line][1].value.empty?
      @ProjectName = inventory[0][line][2].value unless inventory[0][line][2].value.empty?

end

The cells with values have no issues, but when it reaches 2 empty rows below all data it throws this… Can anyone tell me how to do this?

Is it not fairly obvious? The error message says you are calling the method value on something that is nil, so presumably inventory[0][line][1] is nil. So just test that for nil. There are nicer ways of coding this however, I might use @projectCode = inventory[0][line][1].value if inventory[0][line][1]

However you seem to be in a loop that keeps overwriting @projectCode but perhaps you have snipped out some of the code.

Colin

tried @projectCode = inventory[0][line][1].value if inventory[0][line][1].nil?

and even testing inventory[0][line].nil? and inventory[0].nil? and I keep getting the same error

undefined method `’ for nil:NilClass

I am overwriting @projectCode with each iteration because there’s a comparison later.

Please don't top post, it makes it difficult to follow the thread. Insert your replies inline at appropriate points in previous message. Thanks.

tried @projectCode = inventory[0][line][1].value if inventory[0][line][1].nil?

and even testing inventory[0][line].nil? and inventory[0].nil? and I keep getting the same error

undefined method `' for nil:NilClass

if inventory[0] gives you that message then inventory must be nil. Put some debug code in to check out what is happening. The simplest way is to insert puts statements to show the values of variables. The output will appear in the server terminal. For more sophisticated debug techniques see the Rails Guide on Debugging.

Colin