我有一张Excel文件,其中包含约15万行。
我使用SXSSFWorkbook来创建此文件,到目前为止,它没有任何问题。
现在,我打算打开文件并追加一个新工作表,其中包含1行:
final FileInputStream fis = new FileInputStream(new File("file.xlsx"));
final XSSFWorkbook xssf = new XSSFWorkbook(fis);
final SXSSFWorkbook sxssf = new SXSSFWorkbook(xssf);
新的XSSFWorkbook(fis)导致OOM:
java.lang.OutOfMemoryError:Java堆空间位于 java.util.Arrays.copyOf(Arrays.java:3236)〜[na:1.8.0_151]在 java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118) 〜[na:1.8.0_151]在 java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) 〜[na:1.8.0_151]在 java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153) 〜[na:1.8.0_151]在 org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource $ FakeZipEntry。(ZipInputStreamZipEntrySource.java:129) 〜[poi-ooxml-3.11.jar:3.11]在 org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource。(ZipInputStreamZipEntrySource.java:55) 〜[poi-ooxml-3.11.jar:3.11]在 org.apache.poi.openxml4j.opc.ZipPackage。(ZipPackage.java:88) 〜[poi-ooxml-3.11.jar:3.11]在 org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:272) 〜[poi-ooxml-3.11.jar:3.11]在 org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) 〜[poi-ooxml-3.11.jar:3.11]在 org.apache.poi.xssf.usermodel.XSSFWorkbook。(XSSFWorkbook.java:258) 〜[poi-ooxml-3.11.jar:3.11]
...等等。
问题是:我应该如何使用视图打开文件以创建其中包含一些行(实际上没有很多行)的新工作表?
重要的是要注意,堆空间非常有限,没有机会扩大它。