很长时间以来,我们一直使用电子表格::WriteExcel,这就像一种魅力。
几年前,我们迁移到Excel,它使用的内存比WriteExcel多5倍,如文档中所述。由于XLSX,用户现在能够生成更大的Excel文件。从几周开始,我们就开始面对内存使用问题,在这些问题中,大约84%的服务器内存是需要的。
同样的文档说明$workbook->set_optimization()应该解决这个问题。给出的业绩数字是有希望的。我们试图在一个示例文件上使用$workbook->set_optimization(),但这是行不通的。它会产生一个取消链接的错误。
如果删除set_optimization(),则正确生成Excel文件。作者在本线程中提供了该示例:
#!/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我们正在运行:
任何帮助都将不胜感激。
发布于 2017-05-18 15:20:25
Excel::Writer::XLSX用于在XLSX中写入大量数据,处理大数据并减少内存使用,使用set_optimization()方法。
在XLSX文件中,工作簿最多可以创建10,48,576行和16,384列,如果行数超过最大限制,则可以在同一工作簿中创建新工作表,并以这种方式处理大量数据。
有关详细信息,请参阅此链接中的"Write_largeData_XLSX.pl“XLSX。
https://stackoverflow.com/questions/43090638
复制相似问题