【发布时间】:2016-09-27 21:51:07
【问题描述】:
我有非常大的 xls 文件,其中包含两张纸。我想将这两张纸合二为一并复制到新工作簿。但是当我尝试访问这个大 xls 时出现内存不足异常,如下所示:
FileInputStream fis = new FileInputStream(new File("input.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(fis);
我尝试使用 xls 的事件 api:http://poi.apache.org/spreadsheet/how-to.html#event_api 但是使用它我们只能读取单元格值。但是这里我需要复制到新的excel表。
【问题讨论】:
-
您是否使用
-Xms和Xmx参数增加了堆大小? -
是的。我试过了,但它不起作用。我需要通过程序解决一些其他问题。
-
请提供一些细节。两个工作簿的大小分别是单元格数 (H x V) 和兆字节数。
-
文件大小为 97MB 。有 65k 行。
-
这不是一个“大”文件,它应该适合大多数现代系统。你试过
-Xms1G -Xmx2G吗?您可以在具有更多内存的系统上运行它吗?您使用的是 64 位 JVM 吗?
标签: java apache-poi