Skip to content

Instantly share code, notes, and snippets.

@aya-soft
Last active February 13, 2019 18:42
Show Gist options
  • Select an option

  • Save aya-soft/5099720 to your computer and use it in GitHub Desktop.

Select an option

Save aya-soft/5099720 to your computer and use it in GitHub Desktop.
Spreadsheet: wrong value from formula
#encoding: utf-8
require 'spreadsheet'
xls_file_name = "/tmp/status_data.xls"
xls_book = Spreadsheet.open(xls_file_name, "rb")
xls_book.worksheet(0).each do |row|
puts row[6].value if row[6] and row[6].is_a?(Spreadsheet::Formula)
end
@aya-soft

aya-soft commented Mar 6, 2013

Copy link
Copy Markdown
Author

rspec output:

4.88
3.86
34.9
34.49
41.22
39.09
7.5
5.37
7.52
9.774999999999999
should get right price value

Finished in 0.10021 seconds
1 example, 0 failures

@zdavatz

zdavatz commented Mar 6, 2013

Copy link
Copy Markdown

I am now trying this:

#encoding: utf-8

require 'spreadsheet'

xls_file_name = "/tmp/status_data.xls"

xls_book = Spreadsheet.open(xls_file_name, "rb")
xls_book.worksheet(0).each do |row|
puts row[6].try(:value) if row[6] and row[6].is_a?(Spreadsheet::Formula)

end

but I get this error:

aya.rb:10:in block in <main>': undefined methodtry' for #Spreadsheet::Formula:0x000000022a5f38 (NoMethodError)
from /usr/local/lib64/ruby/gems/1.9.1/gems/spreadsheet-0.8.1/lib/spreadsheet/worksheet.rb:133:in block in each' from /usr/local/lib64/ruby/gems/1.9.1/gems/spreadsheet-0.8.1/lib/spreadsheet/worksheet.rb:132:inupto'
from /usr/local/lib64/ruby/gems/1.9.1/gems/spreadsheet-0.8.1/lib/spreadsheet/worksheet.rb:132:in each' from /usr/local/lib64/ruby/gems/1.9.1/gems/spreadsheet-0.8.1/lib/spreadsheet/excel/worksheet.rb:35:ineach'
from aya.rb:9:in `

'

So I really need a clean script from you!

Best
Zeno

@zdavatz

zdavatz commented Mar 7, 2013

Copy link
Copy Markdown

With above script I get

/tmp> ruby aya.rb
7.5
5.37
7.52
9.78

with your sample XLS (not modified by me) on my Gentoo Linux.

Best
Zeno

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment