此问题已经被问过一次,但没有人给出绝对的解决方案。 我试图从现有模板生成一个xls文件,但我得到一个错误,我不知道如何面对!
我的代码: String nombre =“Manuel”;
try (InputStream templateFileName = ExportExcelServlet.class.getResourceAsStream("/segJBOSS/lib/xls/Tabla_Gestion.xlsx")) {
try (OutputStream destFileName = new FileOutputStream("Tabla_Gestion.xls")) {
ArrayList<String> array = new ArrayList<String>();
array.add(nombre);
Context context = new Context();
context.putVar("gestion", array);
JxlsHelper.getInstance().processTemplate(templateFileName, destFileName, context);
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
e.printStackTrace();
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
e.printStackTrace();
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
e.printStackTrace();
}
这是在WebServlet中实现的。
17:08:43,472 ERROR [org.jxls.util.TransformerFactory] (default task-3) Method createTransformer of org.jxls.transform.poi.PoiTransformer class thrown an Exception: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NullPointerException
17:08:43,478 INFO [stdout] (default task-3) Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath
17:08:43,479 ERROR [stderr] (default task-3) java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath
非常感谢!
答案 0 :(得分:1)
请确保您在类路径中有 jxls-poi 和Apache POI jar(如果您打算使用Apache POI)
答案 1 :(得分:1)
使用maven配置文件和资源过滤时,我也遇到了同样的问题。通过关闭资源过滤到jxls excel模板来修复它。
<resource>
<directory>src/main/resources/</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xlsx</include>
</includes>
</resource>
答案 2 :(得分:0)
JXLS报告的异常可能不明确,实际上是创建了一个excel文件异常。
你可以这样做:<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
<excludes>
<exclude>template/*.*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/</directory>
<filtering>false</filtering>
<includes>
<include>template/*.*</include>
</includes>
</resource>
</resources>
答案 3 :(得分:0)
确保您的maven pom中有guard let data = data, let jsonObj = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary else { // Handle error here }
和jxls
,
还要检查您的模板文件是否在您的类路径中。
我遇到了这个问题,我的代码如下:
jxls-poi
我的问题是我错误输入InputStream is = JxlsTest.class.getResourceAsStream("/template.xlsx");
为/template.xlsx
,jxls无法找到模板xls文件,因此抛出此错误。
答案 4 :(得分:0)
就我而言,我的类路径中有不兼容的apache poi版本。 jxls-poi:1.0.15
使用poi:3.17
,而我使用poi:3.9
。
将poi更改为3.17解决了我的问题。
答案 5 :(得分:0)
奇怪的是,整个互联网上仍然没有这个问题的答案。首先,您只需要将ExportExcelServlet.class.getResourceAsStream
替换为FileInputStream