6

这个问题已经被问过一次,但没有人给出绝对的解决方案。我试图从现有模板生成一个 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

非常感谢!

4

6 回答 6

2

请确保您在类路径中有jxls-poi和 Apache POI jar(如果您打算使用 Apache POI)

于 2016-03-10T20:50:50.497 回答
1

就我而言,我的类路径中有不兼容的 apache poi 版本。jxls-poi:1.0.15使用poi:3.17,而我有poi:3.9

将 poi 更改为 3.17 解决了我的问题。

于 2018-06-29T08:06:36.030 回答
0

好的,如果你使用 maven,当 maven 构建时,maven 可能会破坏 excel 文件。

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>
于 2017-09-06T07:33:53.050 回答
0

在使用 Maven 配置文件和资源过滤时,我也遇到了同样的问题。通过关闭对您的 jxls excel 模板的资源过滤来修复它。

  <resource>
    <directory>src/main/resources/</directory>
    <filtering>false</filtering>
    <includes>
      <include>**/*.xlsx</include>
    </includes>
  </resource> 
于 2017-11-15T10:37:01.003 回答
0

奇怪的是,在整个互联网上仍然没有这个问题的答案。首先,您只需要替换ExportExcelServlet.class.getResourceAsStreamFileInputStream

于 2019-07-13T12:53:51.653 回答
0

确保jxls并且jxls-poi在您的 maven pom 中,还要检查您的模板文件是否在您的类路径中。

我遇到了这个问题,我的代码如下:

InputStream is = JxlsTest.class.getResourceAsStream("/template.xlsx");

我的问题是我打错/template.xlsx/template.xls,jxls 找不到模板 xls 文件,所以抛出了这个错误。

于 2018-03-03T14:49:46.710 回答