gpt4 book ai didi

perl - 使用 Excel::Writer::XLSX 导出大型数据集时遇到问题

转载 作者:行者123 更新时间:2023-12-04 22:08:39 26 4
gpt4 key购买 nike

我似乎无法使用 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 的新手,所以我不确定是否应该监视另一个进程以查看它是否内存不足。

perl 脚本在导出 85,000 行或更少的行时实际上显示了大约 7% 的内存使用量,并且在导出完成之前它一直保留在进程列表中。

最佳答案

我尝试了以下程序来生成一个 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 生成的输出程序。

关于perl - 使用 Excel::Writer::XLSX 导出大型数据集时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com