使用RubyXL编写xlsx文件花费很长时间来处理大量单元格

时间:2016-01-29 08:45:12

标签: ruby-on-rails ruby excel performance

我在我的rails应用程序中使用RubyXL gem来生成4-5张的工作簿。我们正在生成具有大量单元格的excel(超过5000(146 * 26))。编写该文件并消耗大量内存需要20多分钟。其中一张是动态数据,有一些样式,如边框背景颜色,字体颜色,粗体文本等。我​​正在使用此代码片段。

workbook = RubyXL::Workbook.new()
sheet = workbook.worksheets[0]
cell = sheet.add_cell(row, col, text)
cell.change_fill('#fff')
cell.change_font_color('#000')
cell.change_font_bold(true)

我尝试通过删除一些像边框这样的样式来减少时间,这样可以缩短写作时间,但仍然需要很长时间。所以我已经删除了上面提到的剩余样式。之后现在大约需要1分钟。

您可以建议我将样式应用于单元格的方法,这样可以节省时间并且不会影响性能。

我很乐意回答有关此事的任何问题/疑问,或者我是否遗漏任何问题。

1 个答案:

答案 0 :(得分:1)

您可以更改整个列和行,而不是每个单元格更改单元格。 这会快得多。 我想这个功能有一个小故障,因为更改后的列宽设置为0,因此不可见,但您可以在操作后重置宽度。

sheet.change_column_fill(0, '0ba500')
sheet.change_column_font_color(1, '0ba53d')
sheet.change_column_width(0 ,10)
sheet.change_column_width(1 ,10)