【问题标题】:Apache-POI Generating tiny 8kb workbook taking minutes to completeApache-POI 生成微小的 8kb 工作簿需要几分钟才能完成
【发布时间】:2017-09-05 18:14:04
【问题描述】:

我正在使用 Apache-POI 创建 xlsx 工作簿。创建一个 3 列 350 行的小型工作簿需要 15 分钟以上的时间。我开始精简代码(删除表格格式等>),但我意识到工作簿本身的生成需要几分钟时间。这行代码需要几分钟才能完成:

Workbook wb = new XSSFWorkbook();

关于我可能做错了什么,或者是什么可能导致后台出现这种巨大延迟的任何提示?

编辑:更多上下文

System.out.println("Generating Excel file...");

System.out.println("  Creating workbook...");
Workbook wb = new XSSFWorkbook();
System.out.println("  Creating sheet...");
XSSFSheet sheet = (XSSFSheet) wb.createSheet("DS Datasources");
System.out.println("  Setting auto-filter...");
sheet.setAutoFilter(CellRangeAddress.valueOf("A1:C1"));

在控制台中,我看到“正在创建工作簿...”,然后我必须等待几分钟才能看到“正在创建工作表...”(这也需要一分钟多的时间)。这意味着单行代码会占用所有时间,对吧?

【问题讨论】:

  • 这只是一个对象实例化,应该不会花费太多时间。我怀疑延迟可能是在写入/读取数据时。能贴一下代码sn-p吗?
  • 我的猜测是,它正在尝试进行某种模式验证。虽然这听起来很奇怪,但我会尝试在没有互联网连接的情况下执行。接下来就是检查引用的xml jars——通常使用一些旧的xerces、xalan、xmlbeans、xmlapis……也常常是产生奇怪效果的原因。
  • 感谢您的提示。我将尝试删除不必要的 jar,并获取我需要的所有最新版本。
  • @harshavmb 我用更多上下文更新了这个问题。
  • 您对此的最终解决方案是什么?我遇到了类似的问题 (stackoverflow.com/questions/54185197/…)

标签: java excel apache-poi


【解决方案1】:

我发现在某些情况下,当项目中的 jar 文件在不同的 java 级别下编译时(例如 1 java 1.8 项目中的 java 1.5 jar),JIT 编译器会举手并以纯解释模式运行。我的决定是删除受影响 jar 的源代码并从源代码构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多