easyexcel 复杂表头、动态表头、复杂数据导出
easyexcel 生成动态复杂表头(非注解)+数据填充(非注解)
实现代码
@Test
public void test() throws IOException {
OutputStream out = new FileOutputStream("d://test.xlsx");
ExcelWriter writer = EasyExcelFactory.write(out).build();
WriteSheet sheet1 = new WriteSheet();
sheet1.setSheetName("商品明细");
sheet1.setSheetNo(0);
WriteTable table = new WriteTable( );
table.setTableNo(1);
table.setHead(head());
writer.write(contentData(), sheet1, table);
writer.finish();
out.close();
}
private static List <List<String>> head(){
List<List<String>> headTitles = Lists.newArrayList();
String basicInfo = "基础资料",skuInfo = "商品扩展",orderInfo = "经营情况",empty = " ";
headTitles.add( Lists.newArrayList(basicInfo ,basicInfo,"类别") );
headTitles.add( Lists.newArrayList(basicInfo,basicInfo,"名称" ) );
List<String> skuTitles = Lists.newArrayList("组合商品", "上一次优惠时间", "销售次数", "库存", "价格");
skuTitles.forEach(title->{
headTitles.add( Lists.newArrayList(skuInfo ,skuInfo,title) );
});
List<Integer> monthList = Lists.newArrayList(5,6);
List<String> orderSpeaces = Lists.newArrayList("销售额", "客流", "利润");
monthList.forEach(month->{
orderSpeaces.forEach(title->{
headTitles.add( Lists.newArrayList(orderInfo , month+"月" ,title ) );
});
});
List<String> lastList = Lists.newArrayList("日均销售金额(元)", "月均销售金额(元)" );
lastList.forEach(title->{
headTitles.add( Lists.newArrayList(empty , empty ,title ) );
});
return headTitles;
}
private static List <List<Object>> contentData(){
List<List<Object>> contentList = Lists.newArrayList();
contentList.add( Lists.newArrayList("测试", "商品A","苹果🍎") );
contentList.add( Lists.newArrayList("测试", "商品B","橙子🍊") );
return contentList;
}
Lists
这个类是guava
的依赖
生成效果图