gpt4 book ai didi

java - 使用 Apache POI 打开电子表格时内存不足

转载 作者:行者123 更新时间:2023-12-01 11:14:31 24 4
gpt4 key购买 nike

我正在尝试通过java中的poi读取一个大小为50Mb的excel,其中包含各种工作表,但问题是,当我尝试创建对象时,我得到了异常,其中我发布了堆栈跟踪以下。对于内存空间不足错误,我已配置此

-Xmx1024m -Duser.timezone=GMT0 already

下面是我尝试读取 Excel 拳头的快照,然后将其转换为字节数组,稍后将其作为 bytr 流传递,其中我检测到它的扩展名,并且它是 .xlsx 类型,因此我尝试创建的 momnet我遇到以下异常的对象请告知如何克服此问题

     String fileName = "C:\\abc\\xret.xlsx";


FileInputStream fis = new FileInputStream(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bFile = new byte[(int) fileName.length()];
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
}
} catch (IOException ex) {
ex.printStackTrace();
}
byte[] bytes = bos.toByteArray();
processExcelObjects( bytes);

稍后我将进一步创建对象,如下所示

        byteArrayInputStream = new ByteArrayInputStream(bytes);

if (byteArrayInputStream.available() != -1 )
{
if (filename.lastIndexOf("."))).equalsIgnoreCase(".xlsx") )
{

XSSFWorkbook workbookXlsx = new XSSFWorkbook();
//**** got the exception ********//
workbookXlsx = new XSSFWorkbook(byteArrayInputStream); // ****** on this line I got the exception *********//

}

我在创建上述 workbookXlsx 对象时遇到的异常是

                 org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.attr(Cur.java:3039)
at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.attr(Cur.java:3060)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

请告知是poi内部异常还是堆空间异常

最佳答案

不是 POI 内部异常,您确实耗尽了内存。

您可以尝试增加到 -Xmx2048m 或更多,但请考虑采用不同的方法,例如 @sibnick 在评论中建议的方法:

Processing large xlsx file in Java

关于java - 使用 Apache POI 打开电子表格时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31990918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com