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’ 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 希望这可以帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |