首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用大型数据运行时,XSSFCell在设置值时导致锁定

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

Stack Overflow用户
提问于 2018-09-07 17:40:58
回答 1查看 288关注 0票数 1

我正在写一个巨大的数据到Excel表格。我使用XSSFWorkbook来创建excel。

对于20,000行,excel编写是可以的。但是,当我试图写一个100多万的数据时,excel表格在3个小时内才会出来。当我分析jstack时,我发现有一个锁是在

代码语言:javascript
复制
XSSFCell cell = row.createCell( colNum );
cell.setCellValue( value );

将值设置为单元格,

下面是jstacks

代码语言:javascript
复制
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)

我们怎么处理这件事。请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-04 19:47:18

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

XSSFWorkbook构造器,它以XSSFFactory实例作为输入

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52227297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档