为了账号安全,请及时绑定邮箱和手机立即绑定

XSSFCell 在使用大量数据运行时设置值时导致锁定

XSSFCell 在使用大量数据运行时设置值时导致锁定

温温酱 2021-09-03 21:26:39
我正在将大量数据写入 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)我们该如何处理。请帮我解决这个问题。
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

SXSSFWorkbook 可能是一个很好的解决方案(上面的评论)-如果您想使用 XSSFWorkbook,您可以使用 XSSFFactory 来提供更适合您需要的 SharedStringsTable(请参阅您的堆栈跟踪,它是导致锁定的 SharedStringsTable)

将 XSSFFactory 实例作为输入的XSSFWorkbook 构造函数

创建自定义 SharedStringsTable 的自定义 XSSFFactory 示例。这个文件使用共享字符串数据的临时文件,但您可以修改它以将数据保存在 HashMap 中。


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 303 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号