gpt4 book ai didi

java - 写入 xls 文件时出错 - apache poi 多线程

转载 作者:行者123 更新时间:2023-12-02 03:04:59 25 4
gpt4 key购买 nike

我遇到以下问题。我正在解析一个大的 XML 文件(大约 100 MB) - 然后,在处理数据后,我将输出写入 XLS 文件。

处理是并行完成的(使用 ExecutorService),并且所有线程都写入同一个工作簿。

我得到的异常如下:

Caused by: java.lang.NullPointerException
at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.getEndRowNumberForBlock(RowRecordsAggregate.java:219)
at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.createIndexRecord(RowRecordsAggregate.java:469)
at org.apache.poi.hssf.model.InternalSheet.visitContainedRecords(InternalSheet.java:637)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1466)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1380)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1366)
at sample.Controller.buildSpreadsheet(Controller.java:295)
at sample.Controller.generateXLS(Controller.java:325)
... 58 more

问题是有时可以正常工作,但有时会因此错误而崩溃。

有什么想法吗?

最佳答案

Apache POI 不支持多个线程写入同一工作簿,因此这将失败,正如您所发现的

Apache POI 非常高兴地支持多个线程,所有线程都写入自己的工作簿

您需要重新设计您的逻辑,以便只有一个线程写入给定的工作簿,或者应用您自己的同步逻辑来防止多个线程同时写入

关于java - 写入 xls 文件时出错 - apache poi 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41877296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com