Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xssf使用.xlsm excel写入86000行时的java堆空间_Java_Excel_Apache Poi_Xlsm - Fatal编程技术网

使用xssf使用.xlsm excel写入86000行时的java堆空间

使用xssf使用.xlsm excel写入86000行时的java堆空间,java,excel,apache-poi,xlsm,Java,Excel,Apache Poi,Xlsm,使用poi使用.xlsm excel写入86000行时引发的java堆空间 xssfworkbook at hhhhCell = hhhhRow.createCell(j + colNumber); hhhhCell.setCellValue(ret.getFieldValueString(sortSequence.get(i), colName)); java.lang.OutOfMemoryError: Java heap space at org.apache.xmlbe

使用poi使用.xlsm excel写入86000行时引发的java堆空间

xssfworkbook at hhhhCell = hhhhRow.createCell(j + colNumber);
hhhhCell.setCellValue(ret.getFieldValueString(sortSequence.get(i), colName));

java.lang.OutOfMemoryError: Java heap space
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1592)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.preEmit(Saver.java:1223)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.emit(Saver.java:1144)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.emitElement(Saver.java:926)
        at org.apache.xmlbeans.impl.store.Saver.processElement(Saver.java:456)
        at org.apache.xmlbeans.impl.store.Saver.process(Saver.java:307)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.saveToString(Saver.java:1727)
        at org.apache.xmlbeans.impl.store.Cursor._xmlText(Cursor.java:546)
        at org.apache.xmlbeans.impl.store.Cursor.xmlText(Cursor.java:2436)
        at org.apache.xmlbeans.impl.values.XmlObjectBase.xmlText(XmlObjectBase.java:1455)
        at org.apache.poi.xssf.model.SharedStringsTable.getKey(SharedStringsTable.java:130)
        at org.apache.poi.xssf.model.SharedStringsTable.addEntry(SharedStringsTable.java:176)
        at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:345)
        at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:315)
        at prg.util.PbExcelGenerator.buildReportTableXLSM(PbExcelGenerator.java:5233)
        at prg.util.PbExcelGenerator.createExcelForReportsXLSM(PbExcelGenerator.java:3490)
        at com.progen.reportview.bd.PbReportViewerBD.generateReportForExportReportSchedule(PbReportViewerBD.java:14811)
        at prg.reportscheduler.ReportSchedulerJob.sendExportSchedulerMail(ReportSchedulerJob.java:810)
        at prg.reportscheduler.ReportSchedulerJob.execute(ReportSchedulerJob.java:83)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)

我尝试了很多方法来解决它,最后我得到了如下的解决方案

我使用了一些人建议的POI SXSFWWorkbook,它对我来说很好

SXSSFWorkbook hhhhWorkbook = null;
SXSSFSheet hhhhSheet = null;

CellStyle hhhhStyle = null;
Row hhhhRow = null;
Cell hhhhCell = null;


OPCPackage pkg = OPCPackage.open(inStream);
XSSFWorkbook xssfwb = new XSSFWorkbook(pkg);
hhhhWorkbook = new SXSSFWorkbook(xssfwb,100); // keep 100 rows in memory, exceeding rows will be flushed to disk
hhhhSheet = (SXSSFSheet) hhhhWorkbook.getSheetAt(sheetNumber);

所以问题是什么?我遇到了如上所述的异常,请建议我怎么做?运行应用程序时尝试扩展堆:java-Xms500m-Xmx1000m-jar./dist/myJar.jar