如何使用Ruby读取Excel电子表格的内容?
我正在尝试使用Ruby读取Excel电子表格文件,但它没有读取文件的内容。如何使用Ruby读取Excel电子表格的内容?
这是我的脚本
book = Spreadsheet.open 'myexcel.xls';
sheet1 = book.worksheet 0
sheet1.each do |row|
puts row.inspect ;
puts row.format 2;
puts row[1];
exit;
end
这是给我下面的:
[DEPRECATED] By requiring 'parseexcel', 'parseexcel/parseexcel' and/or
'parseexcel/parser' you are loading a Compatibility layer which
provides a drop-in replacement for the ParseExcel library. This
code makes the reading of Spreadsheet documents less efficient and
will be removed in Spreadsheet version 1.0.0
#<Spreadsheet::Excel::Row:0xffffffdbc3e0d2 @worksheet=#<Spreadsheet::Excel::Worksheet:0xb79b8fe0> @outline_level=0 @idx=0 @hidden=false @height= @default_format= @formats= []>
#<Spreadsheet::Format:0xb79bc8ac>
nil
我需要得到文件的实际内容。我究竟做错了什么?
它看起来像row
,它的类是Spreadsheet::Excel::Row
有效是Excel Range
,它要么包括可枚举或至少暴露了一些可枚举的行为,#each
,例如。
所以,你可能重写你的脚本是这样的:
require 'spreadsheet'
book = Spreadsheet.open('myexcel.xls')
sheet1 = book.worksheet('Sheet1') # can use an index or worksheet name
sheet1.each do |row|
break if row[0].nil? # if first cell empty
puts row.join(',') # looks like it calls "to_s" on each cell's Value
end
请注意,我parenthesised参数,这是通常建议这些天,并取消了分号,这是没有必要,除非你”重新写一条线上的多条语句(你应该很少 - 如果有的话)。
这可能从一个较大的脚本宿醉,但我会指出,在代码中给出的book
和sheet1
变量不是真的需要,那Spreadsheet#open
需要一个块,所以更地道的Ruby版本可能这样的事情:
require 'spreadsheet'
Spreadsheet.open('MyTestSheet.xls') do |book|
book.worksheet('Sheet1').each do |row|
break if row[0].nil?
puts row.join(',')
end
end
你能告诉我如何计算excel表格的行数。 – khan 2015-06-11 13:14:19
我不认为你需要需要ParseExcel的,只是require 'spreadsheet'
你看了guide,它是超级容易。
链接不起作用。 – 2014-07-02 09:37:20
我更新了指向GitHub的链接。现在看来rubyforge已经下降了 – 2014-07-03 12:35:22
你似乎在编写新的代码,所以我建议按照警告和使用'ParseExcel'库作为指示。并不是说我曾经使用过这两种方法,但是建立新的功能对我来说似乎是一个坏主意。 – 2010-07-22 14:21:39
为什么它不显示内容。 – Pavunkumar 2010-07-22 14:27:42