在perl中为excel文件写一个巨大的日期

时间:2014-09-25 08:06:56

标签: perl

use Excel::Writer::XLSX;
my $workbook = Excel::Writer::XLSX->new('test.xlsx');
$workbook->set_optimization();
my $row = 0;
my $col = 0;
$row++;
my $worksheet = $workbook->add_worksheet();
foreach ( sort { lc($a) cmp lc($b); } keys %hash ) {
    my $value = $_;
    $col = 0;
    my @array = split( '\t', $value );
    foreach my $val (@array) {
        $worksheet->write( $row, $col, $val );
        $col++;
    }
    $row++;
}
$workbook->close();

我已经在哈希中存储了大量数据(> 70MB),并且通过使用上面的代码,我将数据写入excel文件。但它显示出内存错误。请帮助我解决这个问题。谢谢

1 个答案:

答案 0 :(得分:1)

Excel :: Writer :: XLSX不应该导致"内存不足"问题,因为您正在使用set_optimization()模式,将内存使用量降低到small and constant value.

但是,将70 MB文件加载到哈希中可能(取决于您的系统)。

也许你可以重构你的程序,一次一行地读取(然后写入)数据而不将所有内容都加载到内存中。