Java apache poi从非常大的xls复制到新工作簿工作表

Java apache poi从非常大的xls复制到新工作簿工作表,java,apache-poi,Java,Apache Poi,我有非常大的xls文件,其中包含两张纸。我想把这两张纸合并成一张,然后复制到新的工作簿中。但当我尝试访问这个大xls时,出现内存不足异常,如下所示: FileInputStream fis = new FileInputStream(new File("input.xls")); HSSFWorkbook workbook = new HSSFWorkbook(fis); 我尝试使用xls的事件api: 但是使用它我们只能读取单元格值。但这里我需要复制到新的excel工作表。Apache PO

我有非常大的xls文件,其中包含两张纸。我想把这两张纸合并成一张,然后复制到新的工作簿中。但当我尝试访问这个大xls时,出现内存不足异常,如下所示:

FileInputStream fis = new FileInputStream(new File("input.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(fis);
我尝试使用xls的事件api:
但是使用它我们只能读取单元格值。但这里我需要复制到新的excel工作表。

Apache POI提供了一个低内存占用API,用于将数据写入xlsx。它不会一次加载内存中的所有内容,因此它是处理非常大的excel文件时的解决方案。您可能需要考虑这一点。

Apache POI提供了一个低内存占用API来向XLSX写入数据。它不会一次加载内存中的所有内容,因此它是处理非常大的excel文件时的解决方案。您可能想考虑这一点。

您是否增加了堆大小与<代码> -XMS和<代码> XMX参数?是的。我试过了,但没用。我需要一些其他的解决方案通过程序。请提供一些细节。这两个工作簿的大小是多少,以单元数(H x V)和兆字节为单位。文件大小是97MB。共有65k行。这不是一个“大”文件,它应该适合大多数现代系统。您是否尝试过使用
-Xms1G-Xmx2G
?你能在内存更大的系统上运行这个吗?您正在使用64位JVM吗?您是否使用
-Xms
Xmx
参数增加了堆大小?是的。我试过了,但没用。我需要一些其他的解决方案通过程序。请提供一些细节。这两个工作簿的大小是多少,以单元数(H x V)和兆字节为单位。文件大小是97MB。共有65k行。这不是一个“大”文件,它应该适合大多数现代系统。您是否尝试过使用
-Xms1G-Xmx2G
?你能在内存更大的系统上运行这个吗?您正在使用64位JVM吗?我正在尝试从xls文件复制,SXSSF用于XLSXSYES,SXSSF用于excel 2007(xslx)我正在尝试从xls文件复制,SXSSF用于XLSXSYES,SXSSF用于excel 2007(xslx)