JXLS с вложенной строкой List - PullRequest
0 голосов
/ 16 марта 2020

Следуя руководству по началу работы с JXLS http://jxls.sourceforge.net/getting_started.html, в примере они определили bean-компонент Employee для вывода списка сотрудников в качестве контекста / источника данных,

public class Employee {
    private String name;
    private Date birthDate;
    private BigDecimal payment;
    private BigDecimal bonus;
    // ... constructors
    // ... getters/setters
}

В нашем случае у нас нет определения компонента, мы хотели бы сделать его динамическим c с помощью списка вложенных строк, простой код такой, как показано ниже,

List<List<String>> lists = new ArrayList();

        for (int i = 0; i < 20; i++) {
            List<String> list = new ArrayList();
            for (int j = 0; j < 4; j++) {
                list.add("Bob");
                list.add("1928 0 11");
                list.add("Cash");
                list.add("49, 000.00");
            }

            lists.add(list);
        }

        System.out.println(file.getAbsolutePath());

        Context context = new Context();
        context.putVar("employees", lists);

        OutputStream os = new FileOutputStream("/Users/user1/Downloads/lrs.xls");

        JxlsHelper.getInstance().processTemplate(new FileInputStream(file), os, context);

Express это: jx:each(item=“employees”, var=“employee” lastCell=“D3”) и определение шаблона:

enter image description here

Однако при выполнении кода выше он выдает:

java.lang.NoSuchMethodException: org.jxls.command.EachCommand.setItem(java.lang.String)
        at java.lang.Class.getMethod(Class.java:1786) ~[na:1.8.0_231]
        at org.jxls.util.Util.setObjectProperty(Util.java:370) ~[jxls-2.8.0.jar:na]
        at org.jxls.util.Util.setObjectProperty(Util.java:346) ~[jxls-2.8.0.jar:na]
        at org.jxls.builder.xls.XlsCommentAreaBuilder.createCommandData(XlsCommentAreaBuilder.java:306) [jxls-2.8.0.jar:na]
        at org.jxls.builder.xls.XlsCommentAreaBuilder.buildCommands(XlsCommentAreaBuilder.java:236) [jxls-2.8.0.jar:na]
        at org.jxls.builder.xls.XlsCommentAreaBuilder.build(XlsCommentAreaBuilder.java:172) [jxls-2.8.0.jar:na]
        at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:220) [jxls-2.8.0.jar:na]
        at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:207) [jxls-2.8.0.jar:na]
        at com.spring.app.controller.IndexController.generateReport(IndexController.java:49) [classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_231]

Ниже приведен pom. xml

<dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls</artifactId>
            <version>2.8.0</version>
        </dependency>

        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-poi</artifactId>
            <version>2.8.0</version>
        </dependency>

Любая помощь будет оценена, спасибо!

...