【发布时间】:2016-07-07 23:04:24
【问题描述】:
我正在制作一个应用程序来分析一些数据,结果必须以 excel 文件的形式呈现。从这个意义上说,我开始使用 Apache POI (3.11)。由于一些报告需要大量的时间和内存来重现,我进行了调查,我发现了 jxls,经过一些测试,我认为是解决方案。但是现在我发现了一个问题:不能同时使用这两个框架。
- 我必须将 Apache POI 从 3.11 更新到 3.14,才能使用 jxls-2.3.0
- 为了使用 jxls 进行测试,我制作了一个额外的包,没有问题
-
我尝试将我的一个类从 Apache POI 迁移到 jxls,但我收到此错误:
java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath。这是我的方法的代码:private void prepareNewReport(File excelFile) { List perforaciones = makePerforacionReport .makePerforacionData(escenario);
}try (InputStream is = ReportePerforacionTotalDialog.class .getResourceAsStream("PerforacionTotal_template.xls")){ try (OutputStream os = new FileOutputStream(excelFile)) { Context context = new Context(); context.putVar("perforaciones", perforaciones); JxlsHelper.getInstance().processTemplate(is, os, context); LOGGER.logger.log(Level.INFO, "Archivo de perfortacion generado con éxito"); } } catch (IOException e) { LOGGER.logger.log(Level.SEVERE, "Problemas buscando el archivo", e); }
这怎么可能?在同一个项目中,我有我的测试类,只是另一个包,它工作正常。如您所见,它与 jxls 页面中的示例没有太大区别,并且导入是相同的。
但更糟糕的是,当我尝试清理并构建我的项目时,我得到了另一个错误:
java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes.CTArray not found
我查看了我为了使用 jxls 和 apache poi 而导入的每个库,没错,那个类不存在。为了看看这两个框架之间是否存在冲突,我从类路径中删除了使用 jxls 所需的所有库。再次清理和构建,没有问题,我有我的 .jar 文件要发送给我的客户,但不完整。
我可以尝试替换所有使用 Apache POI 的类,但这意味着很多工作,因为我的项目中使用 POI 来多次读取包含数据的 excel 文件并将另外许多文件写入 excel。我计划使用 jxls 以利用使用模板。
我会感谢任何帮助或建议。
【问题讨论】:
标签: apache-poi jxls