使用EasyExcel生产excel时,如果使用动态头当头部单元格的值相同时会产生单元格自动合并的问题,有可能我们是不需要去做自动合并的,但是EasyExcel官网又没有提供如何防止自动头合并的解决措施。那就只有从代码当中去找了。
测试代码如下
public class Test {
@org.junit.Test
public void dynamicHeadWrite() {
String fileName ="dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName)
// 这里放入动态头
.head(head()).sheet("模板")
// 当然这里数据也可以用 List<List<String>> 去传入
.doWrite(data());
}
private List data() {
return new ArrayList();
}
private List<List<String>> head() {
List<List<String>> list = new ArrayList<List<String>>();
List<String> head0 = new ArrayList<String>();
head0.add("字符串");
List<String> head1 = new ArrayList<String>();
head1.add("字符串");
List<String> head2 = new ArrayList<String>();
head2.add("日期" + System.currentTimeMillis());
list.add(head0);
list.add(head1);
list.add(head2);
return list;
}
}
运行效果如图,可以看到已经做了自动合并了
假如我们不想要自动合并,可以改成这样
public class Test {
@org.junit.Test
public void dynamicHeadWrite() {
String fileName ="dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName)
// 这里放入动态头
.head(head()).automaticMergeHead(false).sheet("模板")
// 当然这里数据也可以用 List<List<String>> 去传入
.doWrite(data());
}
private List data() {
return new ArrayList();
}
private List<List<String>> head() {
List<List<String>> list = new ArrayList<List<String>>();
List<String> head0 = new ArrayList<String>();
head0.add("字符串");
List<String> head1 = new ArrayList<String>();
head1.add("字符串");
List<String> head2 = new ArrayList<String>();
head2.add("日期" + System.currentTimeMillis());
list.add(head0);
list.add(head1);
list.add(head2);
return list;
}
}
修改之后运行效果如图