Java XSSF工作簿内存问题
我们有一个要求,我们必须从数据库中获取一个xlsx文件,并向其中再添加4张图纸 我已经编写了下面的代码来实现同样的功能 代码: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
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文件。你应该发布一个内存不足的堆栈跟踪。例外情况跟踪如下所示: