【发布时间】:2020-03-18 22:44:31
【问题描述】:
我的项目中有一个场景,用户上传具有 100 万条记录的 XLS 文件,我需要将此 xls 文件转换为 csv 文件,然后 sql server 作业将处理 csv 文件。
我有一个将 xls 文件转换为 csv 的过程 - 但是当我在 PCF 中部署此代码时,它开始抛出堆内存错误。我在本地环境中也遇到了同样的错误。
代码快照:
String inputFileName = "UserInput.xls";
FileInputStream input_document = new FileInputStream(new File(inputFileName));
Workbook my_xls_workbook = StreamingReader.builder().open(input_document);//this line throws out of memory error.
Sheet sheet = my_xls_workbook.getSheetAt(0);
......剩余代码读取工作表对象并执行转换。
【问题讨论】:
-
StreamingReader 不在 Java 标准库中...请提供理解您的代码所需的完整类名(或导入)。
-
尝试使用
open(File)而不是open(InputStream) -
@Andreas 这无济于事,运行的是相同的代码...查看源代码:github.com/monitorjbl/excel-streaming-reader/blob/master/src/…
-
好吧,尝试直接使用 POI 的
SXSSF,以便很好地流式传输读取数据。 -
是的......这个库 OP 正在使用似乎将整个东西加载到内存中,所以这个名字很糟糕,因为它暗示你可以进行流解析(除了下一个元素)但你真的不能从我在源代码中看到的内容。
标签: java excel heap-memory file-conversion pcf