我似乎无法使用Excel :: Writer :: XLSX将超过85,000行导出到.xlsx文件中。导出超过85,000行数据会导致5KB文件中没有数据。导出85,000条记录或90,000条记录(约40秒)时,脚本运行的时间大致相同。
85,000行的文件是7.9MB,但是90,000行的文件只有5KB。
使用top监视导出脚本,我的perl脚本只显示大约1%的内存使用量,并在几秒后消失。我是新手使用perl所以我不确定是否还有另一个进程我应该监视它是否内存不足。
在导出85,000行或更少行时,perl脚本实际显示大约7%的内存使用量,并且在导出完成之前它仍保留在进程列表中。
答案 0 :(得分:2)
我尝试了以下程序来生成90,000x20工作表,输出文件很好。它比你报告的要小一些(~6MB)但是有压缩因此它取决于输入数据:
#!/usr/bin/perl -w
use strict;
use warnings;
use Excel::Writer::XLSX;
my $workbook = Excel::Writer::XLSX->new('bigfile.xlsx');
$workbook->set_optimization();
my $worksheet = $workbook->add_worksheet();
$worksheet->set_column(0, 50, 18);
for my $row (0 .. 90000 -1) {
for my $col (0 .. 20 -1) {
$worksheet->write($row, $col, "Row: $row Col: $col");
}
}
__END__
我唯一的另一个建议是确保您使用的是Excel :: Writer :: XLSX> = 0.51的版本,因为在此之前优化模式中存在内存泄漏。
之后,我认为您应该提交错误报告。确保附加了Excel :: Writer :: XLSX bug_report.pl程序生成的输出。
答案 1 :(得分:1)
您可以尝试解决此问题。