【发布时间】:2017-05-18 23:20:25
【问题描述】:
我们一直在使用 Spreadsheet::WriteExcel 很长时间以来,它的工作原理就像一个魅力。
几年前,我们迁移到 Excel-Writer-XLSX,它使用的内存是 WriteExcel 的 5 倍,如 documentation 中所述。 多亏了 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
我们正在跑步:
- Excel-Writer-XLSX 0.70
- perl v5.10.1
- Red Hat Enterprise Linux Server 6.8 版(圣地亚哥)
任何帮助将不胜感激。
【问题讨论】:
-
您需要包含一个示例,因为我们不知道您的代码中发生了什么。
-
请edit 在您的问题中使用正确的格式。最好包含您自己的示例,因为您的问题应该能够独立存在,无需外部资源。即使该资源在现场,它仍然不是这个问题的一部分。谢谢。
-
我找到了使用 0.76 版的示例,这些示例使用了 $workbook->set_optimization(),但没有找到运行 0.70 版的旧示例。我们无法单独安装最新版本,因为我们使用的是 Redhat 提供的版本