Следуя руководству по началу работы с 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”)
и определение шаблона:
Однако при выполнении кода выше он выдает:
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>
Любая помощь будет оценена, спасибо!