Java XSSF工作簿内存问题

Java XSSF工作簿内存问题,java,excel,memory,out,Java,Excel,Memory,Out,我们有一个要求,我们必须从数据库中获取一个xlsx文件,并向其中再添加4张图纸 我已经编写了下面的代码来实现同样的功能 代码: OPCPackage opcPackage=OPCPackage.open(tempExcelFile); XSSFWorkbook xworkbook=new XSSFWorkbook(opcPackage); SXSSFWorkbook dbWorkBook = new SXSSFWorkbook(xworkbook, ApplicationConstant

我们有一个要求,我们必须从数据库中获取一个xlsx文件,并向其中再添加4张图纸

我已经编写了下面的代码来实现同样的功能

代码:

OPCPackage opcPackage=OPCPackage.open(tempExcelFile);
XSSFWorkbook xworkbook=new XSSFWorkbook(opcPackage);    
SXSSFWorkbook dbWorkBook = new SXSSFWorkbook(xworkbook, ApplicationConstants.FLUSH_LIMIT);
    // add sheets to dbworkBook
现在数据库中excel文件的大小约为10Mb,我在

XSSFWorkbook xworkbook=new XSSFWorkbook(opcPackage);    
我的内存设置为-Xms512m-Xmx1024m,无法更改此数字。我已经看到一些解决方案使用了事件API


我的问题是,即使我使用事件api来读取行,我如何将其写回SXSSFWorkbook对象,以便可以向其中添加4张工作表

您的固有问题是,您使用的excel文档非常大,内存非常少。我分析xlsx文档已经有一段时间了,它们可能需要大量的内存来分析。我希望一个10 MB的xlsx文件在内存中解包时需要大约1.5-2.5 GB的内存


您遇到了xlsx格式的一个基本问题,如果您不知道,它基本上只是一堆压缩的XML文档。除非你有足够的内存,否则我真的不建议你打开一个大于2MB的xlsx文件。

你应该发布一个内存不足的堆栈跟踪。例外情况跟踪如下所示: