java - WorkbookFactory.create() 的 Apache Poi 性能问题

标签 java performance apache-poi

我正在尝试使用 apache poi 插件从 Excel 文件中检索命名范围。

代码片段如下所示。

我发现调用 WorkbookFactory.create(excelFile); 花费了很长时间 - 大约 3 秒。

是否有更快的方法来获取与 Excel 工作表关联的所有命名范围?

File excelFile = new File(filePath);
Workbook workbook = WorkbookFactory.create(excelFile);
int n = workbook.getNumberOfNames();

for (int i = 0; i < n; i++)
{
    Name nameObject = workbook.getNameAt(i);
    String formulaName = nameObject.getRefersToFormula();
    System.out.println("Named Range is :"+formulaName);
}

最佳答案

我刚刚向 POI 提交了一个补丁,它修复了可怕的 WorkbookFactory.create() 执行时间,您可能想在这里查看它:

https://issues.apache.org/bugzilla/show_bug.cgi?id=51585

构建 POI 并不难 - 只需将补丁应用到 vanilla 3.9 版本即可。

关于java - WorkbookFactory.create() 的 Apache Poi 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18957278/

相关文章:

javascript - Visual Studio 上的紧凑代码

c# - 使用 NHibernate 的简单获取(使用按代码映射)非常慢

java - 在java中,如何通过非递归算法删除一个文件夹/目录?

java - 反射 API 中的方法类

ios - 有没有办法检查是否堆叠了太多VC

java - 使用 Apache POI 设置 PowerPoint 文档中圆角矩形的半径

java - Apache POI 日志记录,不记录任何内容

java - 将 Apache POI 与 GraalVM native 镜像结合使用 - 来自 XMLBeans 的 ClassCastException

Java定义方法为2个连续数字返回相同的值

java - Liquibase:如何在 EntityManager 构建之前执行 Servlet Listener