- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个应用程序来分析一些数据,结果必须以 excel 文件的形式呈现。从这个意义上说,我开始使用 Apache POI (3.11)。由于某些报告需要花费大量时间和内存才能重现,我进行了调查并找到了 jxls,经过一些测试后我认为是解决方案。但是现在我发现了一个问题:不能同时使用两个框架。
我尝试将我的一个类从 Apache POI 迁移到 jxls,但我收到此错误:java.lang.IllegalStateException:无法加载 XLS 转换器。请确保 Transformer 实现在类路径中
。这是我的方法的代码:
private void prepareNewReport(File excelFile) {
List perforaciones = makePerforacionReport
.makePerforacionData(escenario);
<pre><code>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);
}
</code></pre>
}
这怎么可能?在同一个项目中,我有我的测试类,只是另一个包,它工作正常。如您所见,它与 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 转换器。在此处查看 JXLS 入门信息:http://jxls.sourceforge.net/getting_started.html
As it is explained in Transformers section (see Main Concepts)) Jxls core module does not depend on any specific Java-Excel library and works with Excel exclusively through a predefined interface. Currently Jxls supplies two implementations of this interface in separate modules based on the well-known Apache POI and Java Excel API libraries.
如果您使用的是 Maven,请务必在您的 pom.xml 中包含 JXLS 入门页面上列出的 jxls-poi 依赖项:
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>1.0.9</version>
</dependency>
对于第二个问题,org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes.CTArray
不在 3.11 的 apache POI ooxml 模式 jar 文件中(poi-ooxml-schemas-3.11- 20141221.jar) 或 3.14 (poi-ooxml-schemas-3.14-20160307.jar)。 POI 使用一组精简的 ooxml 模式类,您需要从 http://central.maven.org/maven2/org/apache/poi/ooxml-schemas/1.3/ 获取 ooxml 模式的完整 jar。或者,如果您使用的是 Maven(或其他构建工具),请从 https://mvnrepository.com/artifact/org.apache.poi/ooxml-schemas/1.3 获取构建的依赖项
例如,对于 maven:
<!-- https://mvnrepository.com/artifact/org.apache.poi/ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.3</version>
</dependency>
请务必从您的 maven pom.xml 中删除 poi-ooxml-schemas 依赖项,以便上面的 ooxml-schemas 优先。
关于apache-poi - 我可以同时使用 jxls 和 apache poi 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38256614/
我为 jxls 2.x 创建了一个 Excel 模板。有一个单元格我应用了条件格式。但是,条件格式仅适用于我创建的完全相同的单元格,并且不会复制到以下行。任何的想法? 最佳答案 有一个与此相关的错误,
我可以在 jxls 1.X 中使用 varStatus 属性获取行索引,同时使用 foreach 遍历列表,但是 jxls 2.3.0 不支持这个,如何使用 jxls 2.3.0 在 EXCEL 中输
使用 JXLS 1,可以通过简单调用来在 Excel 模板中进行替换 XLSTransformer.transformXLS(is,beans) 例如,我们有 bean 对象,它们的组织方式如下(不太
我正在使用 jxls-poi-1.0.12。 jxls 2.5 发布后,gradle 自动将 jxls 更新为 2.5。对于结果,我在运行 JxlsHelper.getInstance().proce
我正在创建一个报告,我需要将我的数据结构输出到 Excel 电子表格。为此,我使用 JXLS,但在创建 jx 公式以正确输出数据时遇到问题。 我有一个人员类型列表: List people = ne
我尝试在第一个 jXLS 模板中评估像 ${messages.${column}} 这样的内部变量,但没有成功。 有人可以帮忙吗?这甚至是可能的吗?任何帮助将不胜感激。 干杯乔斯卡 最佳答案 任何对象
我想提供一种通过命令指定工作表名称的方法。工作表名称应根据工作表中的内容动态创建。 我注意到,当使用each-command的multisheet属性时,可以为动态工作表指定固定工作表名称。 在 ve
我只是想证明来自 Java JXLS 的演示代码:http://jxls.sourceforge.net/samples/object_collection.html但是在添加(没有 MAVEN)必要
如果我需要调用从多个线程创建 xls 文件的方法 - 我可以使用 XLSTransformer 作为同步(或者甚至不使用) )类的字段?如果 XLSTransformer.transformXLS()
我正在尝试将两个集合放入 Excel 文档中。我正在这样做: context.putVar("collection1", collection1); context.putVar("collectio
我正在使用 JXLS 创建 Excel 工作表。在模板中,我指定了每列所需的列宽。输出是 HSSFWorkbook。我从 HSSFWorkbook 对象创建一个字节数组,如下所示。问题是,我失去了列宽
我需要在 jxls bean 中使用 DateFormat 对象。如果在我的类里面我写了以下内容: private synchronized DateFormat df = new SimpleDat
我正在使用带有 apache poi 实现的 JXLS 2.3.0。 我使用以下代码来创建 excel : try{ InputStream is = ObjectCollectionDemo.
我使用 JXLS 和 Excel 模板创建了一个报告。我有一堆单元格/列从数据库中提取数据,然后有几列是空白的,然后我的报告中的几列中也有一些公式/条件。我遇到的问题是其中一个公式需要运行/乘以两个空
按照其网站上的示例,http://jxls.sourceforge.net/getting_started.html 。我在尝试写入处理后的文件时遇到了问题。它没有写入应由 JEXL 替换的数据,而是
我想使用一个库来读取 xls 文件,JXLS看起来非常有用,因为可以在 XML 文件中配置映射。 如果我遇到非常大的文件的性能问题,是否可以限制内存中的行数,以便一次读取文件 N 行? 谢谢。 最佳答
我正在使用 JXLS 使用自定义模板生成 Excel 文件。该模板只是库附带的标准网格导出模板,只是我更改了模板文件中某些列的宽度。我的代码大部分只是示例代码的副本。 private void ex
我正在尝试使用 jXLS 将数据从列表导出到 Excel 工作表。我需要使用 jXLS 创建一个 Excel 模板并使用该模板打印出数据列表。我有一个名为 Department 的 Bean 类,我需
使用过的版本 兴趣点:3.15 jxls:2.4.0 jxls-poi:1.0.12 这是一个template允许简单地重现问题。 请注意,我正在使用 JXLS 的多页功能。 当if-conditio
这是我面临的问题:嵌套集合。 我有一个 ArrayList (顶级集合)类。在每个 Subject 中,我都有另一个 Group 类型的 ArrayList。最后,我在每个组中都有一个 学生 的 Ar
我是一名优秀的程序员,十分优秀!