当前位置: 首页 > 知识库问答 >
问题:

使用Excel::Writer::XLSX导出大型数据集时出现问题

卢志行
2023-03-14

我似乎无法使用Excel::Writer::XLSX将超过85,000行导出到. xlsx文件。导出超过85,000行数据会导致5KB文件中没有数据。当导出85,000条记录或90,000条记录(约40秒)时,脚本运行所需的时间大致相同。

85000行的文件是7.9MB,但90000行的文件只有5KB。

使用top监视导出脚本,我的perl脚本只显示大约1%的内存使用率,几秒钟后就会消失。我不熟悉使用perl,所以我不确定是否还有另一个进程需要监视,以查看它是否内存不足。

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

共有2个答案

壤驷向明
2023-03-14

有两件事可以解决这个问题。

  1. 在程序末尾添加一个显式工作簿close(),以防析构函数中的隐式关闭被某种方式阻止
水浩歌
2023-03-14

我尝试了以下程序来生成90000x20工作表,输出文件很好。它比您报告的稍小一些(~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版本

在那之后,我认为你应该提交一份bug报告。确保附加由Excel::Writer::XLSX bug_报告生成的输出。pl程序。

 类似资料:
  • 本文向大家介绍Oracle 使用TOAD实现导入导出Excel数据,包括了Oracle 使用TOAD实现导入导出Excel数据的使用技巧和注意事项,需要的朋友参考一下 在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad。在T

  • 问题内容: 我正在尝试通过Apache POI读取大型Excel文件xlsx,例如40-50 MB。我的内存不足异常。当前的堆内存为3GB。 我可以阅读较小的excel文件,没有任何问题。我需要一种方法来读取大型excel文件,然后通过Spring excel视图将它们作为响应返回。 我首先开始使用, 但是每个Apache POI API的使用成本很高,因此我改用OPC封装方式,但效果仍然相同。我

  • 通过官方提供的插件我们可以将图表中数据导出为常见的 Excel 数据文件(.csv 和 .xls),下面是一个实例: 使用方法 额外引入插件即可,我们提供的版本已经解决了中文乱码问题,详见 社区帖子 <!-- 基本的文件 --> <script src="http://code.highcharts.com.cn/highcharts/highcharts.js"></script> <scrip

  • 问题内容: 我一直在尝试使用json.net(https://dl.dropboxusercontent.com/u/2976553/json)解析json块,但是它未能说明json对象后面有文本。但是,如果您查看它在哪里引发异常 我检查了TokenType,它似乎不应该生成异常。我也修改了代码以使其忽略,但是它似乎没有解析任何内容。 我正在用这个.. 我已经将json粘贴到许多在线检查器中,他们

  • 我希望连接的文件夹中有大约500个数据集。它们都有相同的列名:“年”、“邮政编码”、“Var1”、“Var2”、“Var3”。 我使用以下代码循环浏览文件夹中的文件: 当我输出数据集时,仅显示2019年的数据集和邮政编码000001。我打印了整个文件列表,我想要连接的数据集都在那里。有没有洞察到为什么会出现这种情况?谢谢

  • 如果我没有使用spring构建图形,那么是否可以使用spring框架完全访问我的neo4j图形?我正在尝试一些示例,但它似乎无法正常工作,因为spring创建的某些元数据不存在。 编辑:例如,我有这个错误当我试图通过它的id访问一个节点时,即