首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Ruby解析XLS和XLSX (MS Excel)文件?

用Ruby解析XLS和XLSX (MS Excel)文件?
EN

Stack Overflow用户
提问于 2010-07-24 02:00:44
回答 6查看 94.4K关注 0票数 80

有没有能解析XLS和XLSX文件的gem?我找到了Spreadsheet和ParseExcel,但它们都不能理解XLSX格式。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-19 04:31:16

我刚找到了roo,这可能会满足我的需求,读一个基本的电子表格。

票数 56
EN

Stack Overflow用户

发布于 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
票数 44
EN

Stack Overflow用户

发布于 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,因为它已经过时了,人们对它有错误/有问题。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3321011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档