我正在将大量数据写入 Excel 工作表。我正在使用 XSSFWorkbook 创建 excel。
对于 20,000 行,excel 写入很好。但是当我尝试写入超过100万的数据时,excel表超过3个小时都没有出来。当我分析时jstack,我发现有一个正在创建的锁
XSSFCell cell = row.createCell( colNum );
cell.setCellValue( value );
为单元格设置值,
以下是jstacks,
java.lang.Thread.State: RUNNABLE
at org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1700)
at org.apache.xmlbeans.impl.store.Saver$TextSaver.preEmit(Saver.java:1303)
at org.apache.xmlbeans.impl.store.Saver$TextSaver.emit(Saver.java:1190)
at org.apache.xmlbeans.impl.store.Saver$TextSaver.emitElement(Saver.java:962)
at org.apache.xmlbeans.impl.store.Saver.processElement(Saver.java:476)
at org.apache.xmlbeans.impl.store.Saver.process(Saver.java:307)
at org.apache.xmlbeans.impl.store.Saver$TextSaver.saveToString(Saver.java:1864)
at org.apache.xmlbeans.impl.store.Cursor._xmlText(Cursor.java:546)
at org.apache.xmlbeans.impl.store.Cursor.xmlText(Cursor.java:2436)
**- locked <0x000000076354cdc0> (a org.apache.xmlbeans.impl.store.Locale)**
at org.apache.xmlbeans.impl.values.XmlObjectBase.xmlText(XmlObjectBase.java:1500)
at org.apache.poi.xssf.model.SharedStringsTable.getKey(SharedStringsTable.java:134)
at org.apache.poi.xssf.model.SharedStringsTable.addEntry(SharedStringsTable.java:180)
at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:350)
at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:320)
我们该如何处理。请帮我解决这个问题。
幕布斯7119047
相关分类