有没有能解析XLS和XLSX文件的gem?我找到了Spreadsheet和ParseExcel,但它们都不能理解XLSX格式。
发布于 2010-10-19 04:31:16
我刚找到了roo,这可能会满足我的需求,读一个基本的电子表格。
发布于 2012-12-28 03:57:45
Excel适用于roo (.xls和.xlsx),并且正在积极开发中。
我同意它的语法不是很好,也不像ruby。但这可以很容易地实现,例如:
class Spreadsheet
def initialize(file_path)
@xls = Roo::Spreadsheet.open(file_path)
end
def each_sheet
@xls.sheets.each do |sheet|
@xls.default_sheet = sheet
yield sheet
end
end
def each_row
0.upto(@xls.last_row) do |index|
yield @xls.row(index)
end
end
def each_column
0.upto(@xls.last_column) do |index|
yield @xls.column(index)
end
end
end
发布于 2014-01-05 07:59:47
我使用的是creek,它使用nokogiri。它很快。在我的Macbook Air上的21x11250 xlsx桌面上使用了8.3秒。让它在ruby 1.9.3+上工作。每一行的输出格式是行和列名到单元格内容的散列:{"A1"=>"a cell",“B1”=>“另一个单元格”}散列不能保证键将按原始的列顺序排列。https://github.com/pythonicrubyist/creek
dullard是另一个使用nokogiri的很好的工具。它是超级快的。在我的Macbook Air上的21x11250 xlsx桌面上使用了6.7秒。让它在ruby 2.0.0+上工作。每行的输出格式是一个数组:"a cell", "another cell"
前面提到的simple_xlsx_reader很棒,但有点慢。在我的Macbook Air上的21x11250 xlsx桌面上使用了91秒。让它在ruby 1.9.3+上工作。每行的输出格式是一个数组:"a cell", "another cell"
另一个有趣的是oxcelix。它使用ox的SAX解析器,据说比nokogiri的DOM和SAX解析器都要快。它应该输出一个矩阵。我不能让它工作。此外,rubyzip还存在一些依赖问题。不会推荐这样做。
总之,creek似乎是个不错的选择。其他帖子推荐simple_xlsx_parser,因为它有类似的性能。
删除了推荐的dullard,因为它已经过时了,人们对它有错误/有问题。
https://stackoverflow.com/questions/3321011
复制相似问题