我需要用Java读取Excel表并将其写入同一个工作表。它适用于单线程。由于它逐个记录地处理,所以它成为耗时的过程。我想一次使用多线程处理多个记录。
示例文件- File.xlsx
名称和年龄从工作表中读取,并应用一些逻辑并写入备注栏。
假设我有1000条记录,我想用多线程同时处理500条记录。
在上面的场景中,两个线程开始读取(名称和年龄列)和写入(备注列)到同一个Excel表。
第一线程应该处理1到500,
第二个线程应该处理501到1000。
如何才能得到这方面的最佳解?我正在使用POI处理Excel。
发布于 2020-02-09 08:47:06
你所要求的不太可能可靠地工作。这可以归结为Apache的线程安全属性。常见问题说:
简而言之:在不同的线程中处理不同的文档--对象将工作。在多个线程中访问相同的文档将无法工作。
您希望使用多个线程同时读取和写入相同的电子表格。这就是FAQ说的不安全的用例。
如何才能得到这方面的最佳解?
为了获得更快的解决方案,您在处理数据时需要对数据使用其他表示形式(即不是Excel电子表格):
或者,如果您使用C#编写代码,则可以选择直接与Excel应用程序交互。有关一些想法,请参见下面的问答。
https://stackoverflow.com/questions/60133843
复制相似问题