【发布时间】: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