我们一直在使用Spreadsheet :: WriteExcel很长一段时间,这就像一个魅力。
几年前,我们迁移到了Excel-Writer-XLSX,它使用的内存比documentation中所述的WriteExcel多5倍。 感谢XLSX,用户现在可以生成更大的Excel文件。 我们几个星期后才开始面对内存使用问题,需要大约84%的服务器内存。
相同的文档指出$workbook->set_optimization()
应解决问题。给定的性能数据很有希望。
我们尝试在示例文件上使用$workbook->set_optimization()
,但这不起作用。它会生成取消链接错误。
如果删除set_optimization()
,则会正确生成Excel文件。
该示例由作者在thread:
#!/usr/bin/perl -w
use strict;
use Excel::Writer::XLSX;
my $workbook = Excel::Writer::XLSX->new('test.xlsx');
$workbook->set_optimization();
my $worksheet = $workbook->add_worksheet();
my @header_values = ( 1, 2, 3, 'foo', 'bar', 6, 7 );
my $header_cnt = 0;
for my $header_cell (@header_values){
$worksheet->write(0, $header_cnt, $header_cell);
$header_cnt++;
}
$workbook->close();
Error unlinking file /opt/.../rKhGTRYWSJ using unlink0 at /usr/local/share/perl5/Excel/Writer/XLSX/Worksheet.pm line 204
(in cleanup) Error unlinking file /opt/.../iGr8Qo8VBD using unlink0 at /usr/local/share/perl5/Excel/Writer/XLSX/Worksheet.pm line 204
我们正在运行:
任何帮助都将不胜感激。
答案 0 :(得分:0)
Excel :: Writer :: XLSX用于在XLSX中写入大量数据并处理大数据并减少内存使用量。使用set_optimization()方法。
在XLSX文件中,工作簿最多可以创建10,48,576行,并且可以创建16,384列,如果行数超过最大限制,则可以在同一工作簿中创建新工作表,并且以这种方式创建大量的工作表数据可以处理。
请参阅此链接https://github.com/AarthiRT/Excel_Writer_XLSX中的“Write_largeData_XLSX.pl”以获取更多详细信息。