jxls收集印刷订单

这是我的Excel模板。 不幸的是,employee.email是ArrayList,可以有多个值。

在这里输入图像说明

结果变成了

在这里输入图像说明

实际上,aaa1.gmail.com和aaa2.gmail.com属于AAA,同样bbb1.gmail.com和bbb2.gmail.com属于BBB。 在这种情况下,excel输出非常具有误导性。

是否有可能得到如下?

在这里输入图像说明

由于我对jxls非常陌生,所以任何帮助真的很感激。

首先你需要有一个像下面这样的POJO来存放数据。

public class Employee { private int id = 0; private String name = null; private List<String> mails = new ArrayList<String>(); // getters & setters } 

现在创build你想在你的excel文件中显示的数据对象

 Employee emp1 = new Employee(); emp1.setId(1); emp1.setName("AAA"); emp1.getMails().add("aaa1@xyz.com"); emp1.getMails().add("aaa2@xyz.com"); Employee emp2 = new Employee(); emp2.setId(2); emp2.setName("BBB"); emp2.getMails().add("bbb1@xyz.com"); emp2.getMails().add("bbb2@xyz.com"); List<Employee> employees = new ArrayList<Employee>(); employees.add(emp1); employees.add(emp2); 

然后将数据添加到java.util.Map中

 Map<String, List<Employee>> beanParams = new HashMap<String, List<Employee>>(); beanParams.put("employees", employees); 

然后创buildXLSTransformer对象并设置源文件,目标文件和保存数据的地图

 XLSTransformer former = new XLSTransformer(); former.transformXLS(srcFilePath, beanParams, destFilePath); 

你需要使用两个 <jx:forEach>标签遍历地图中的列表,然后你可以将值设置到你的结果excel文件中。

使用以下方法更改您的Excel模板文件

在这里输入图像说明

最后的结果会像

在这里输入图像说明