加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – xlsx问题:创建包含大量行的excel表

发布时间:2020-12-17 02:43:37 所属栏目:百科 来源:网络整理
导读:我正在使用Axlsx创建一个excel文件.对于小型数据集,它工作正常.但是一旦数据集变大,它就会挂起.我对这个过程进行了分析,它做了很多事. a = Axlsx::Package.newbook = a.workbookbook.add_worksheet(:name = "test") do |sheet| input_array.each do |input_d
我正在使用Axlsx创建一个excel文件.对于小型数据集,它工作正常.但是一旦数据集变大,它就会挂起.我对这个过程进行了分析,它做了很多事.

a = Axlsx::Package.new
book = a.workbook
book.add_worksheet(:name => "test") do |sheet|

  input_array.each do |input_data|
     ...# covert input_data to row_data
     sheet.add_row(row_data)
  end
end
File.open("testfile",'w') { |f| f.write(p.to_stream().read) }

我的input_array大小约为400,000,因此工作表有400,000行,非常大.它停留在p.to_stream().读.任何帮助都会很棒.谢谢.

解决方法

看起来我需要开始关注SO!
这是randym(axlsx的作者)

有几件事我想指出,应该帮助你得到你需要做的,好吧……完成!

>如果您要写入文件,请考虑Package#serialize – 不是因为它更快,而是因为它维护的代码较少.

p.serialize’filename.xlsx’
>过去几周已经取得了重大的业绩改善.请升级到1.1.1 gem不再依赖于RMagic,不再需要use_autowidth = false.

https://github.com/randym/axlsx

主人的基准:

Benchmarks w/40k rows:
                            user     system      total        real
axlsx_noautowidth      68.130000   1.690000  69.820000 ( 80.257108)
axlsx                  61.520000   2.290000  63.810000 ( 78.187423)
axlsx_shared           53.280000   1.170000  54.450000 ( 62.880780)
axlsx_stream           52.110000   1.360000  53.470000 ( 61.980672)
csv                    10.670000   0.930000  11.600000 ( 14.901387)

Benchmarks w/4k rows:
                            user     system      total        real
axlsx_noautowidth       4.880000   0.120000   5.000000 (  5.314383)
axlsx                   5.470000   0.110000   5.580000 (  5.853739)
axlsx_shared            5.720000   0.080000   5.800000 (  6.135263)
axlsx_stream            4.840000   0.090000   4.930000 (  5.194801)
csv                     1.090000   0.090000   1.180000 (  1.484763)

这是基准测试文件:

https://gist.github.com/2411144

希望这可以帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读