Roo gem .xlsx文件性能问题

时间:2011-02-02 13:15:05

标签: ruby-on-rails gem

我通过使用roo gem来获得不可接受的性能问题 使用此gem中的XLSX或XLS库读取文件。

有人可能会建议我如何解析.XLSX文件吗?

parsed_file = Excel.new(filename,false, :ignore) if (file_format.upcase
== "XLS")
      parsed_file = Excelx.new(filename,false, :ignore) if
(file_format.upcase == "XLSX")
      raise t "#{filename} is not an Excel file!" if (!parsed_file)

      parsed_file.default_sheet =
parsed_file.sheets[0]#'Sheet2'#oo.sheets[1]

      first_row = parsed_file.first_row
      last_row = parsed_file.last_row
      first_column = parsed_file.first_column
      last_column = parsed_file.last_column
      #logger.info "#### Total Rows:#{last_row}, first_row:#{first_row},
last_row:#{last_row}, first_column:#{first_column},
last_column:#{last_column}"

      first_row.upto(last_row) do |current_line|
              # Stuff ....
      end

谢谢

1 个答案:

答案 0 :(得分:0)

顺便说一下,

mongrel服务器从3767行的文件中挂起.xls或.xlsx,例如:

002N6V3 1506 RH-128 YE YEMEN MOBILE BLACK 0,5 KILOGRAMS Y Y

002N6V3 1506 RH-128 YE YEMEN MOBILE BLACK 0,5 KILOGRAMS Y Y

........

但它适用于1000行以及更少。

通过控制台,它工作。但大约34分钟后。腹板不可接受。 通过使用Spreadsheet需要可接受的时间而不是挂起mongrels服务器。据说是比电子表格更现代的roo gem。

我也将它用作下一种方式:

 parsed_file = Excelx.new(filename,false, :ignore) if (file_format.upcase == "XLSX")
  (1..parsed_file.last_row).each { |row| 
      ret << parsed_file.row(row)          
  }

有人遇到过这个宝石的同样问题吗?除了稍后使用delayed_jobs运行此任务之外的任何其他选择吗?