String fileName ="tableWrite.xlsx";
// 这里直接写多个table的案例了,如果只有一个 也可以直一行代码搞定,参照其他案例
// 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = null;
try {
//大表头
List<List<String>> header = new ArrayList<>();
List<String> cellContain1 = new ArrayList<>();
cellContain1.add("项目集编号/项目集名称 物资出入库台账-XXXX年X月");
//添加22次
for (int i =0;i<22;i++){
header.add(cellContain1);
}
//数据表头
List<List<String>> header2 = new ArrayList<>();
List<String> cellContain3 = new ArrayList<>();
cellContain3.add("细目号");
cellContain3.add("细目号");
header2.add(cellContain3);
List<String> cellContain4 = new ArrayList<>();
cellContain4.add("材料设备名称");
cellContain4.add("材料设备名称");
header2.add(cellContain4);
List<String> cellContain5 = new ArrayList<>();
cellContain5.add("规格型号");
cellContain5.add("规格型号");
header2.add(cellContain5);
List<String> cellContain6 = new ArrayList<>();
cellContain6.add("计量单位");
cellContain6.add("计量单位");
header2.add(cellContain6);
List<String> cellContain7 = new ArrayList<>();
cellContain7.add("期初数量");
cellContain7.add("数量");
header2.add(cellContain7);
List<String> cellContain8 = new ArrayList<>();
cellContain8.add("期初数量");
cellContain8.add("单价");
header2.add(cellContain8);
List<String> cellContain9 = new ArrayList<>();
cellContain9.add("期初数量");
cellContain9.add("金额");
header2.add(cellContain9);
List<String> cellContain10 = new ArrayList<>();
cellContain10.add("本月入库");
cellContain10.add("数量");
header2.add(cellContain10);
List<String> cellContain11 = new ArrayList<>();
cellContain11.add("本月入库");
cellContain11.add("单价");
header2.add(cellContain11);
List<String> cellContain12 = new ArrayList<>();
cellContain12.add("本月入库");
cellContain12.add("金额");
header2.add(cellContain12);
List<String> cellContain13 = new ArrayList<>();
cellContain13.add("本月出库");
cellContain13.add("数量");
header2.add(cellContain13);
List<String> cellContain14 = new ArrayList<>();
cellContain14.add("本月出库");
cellContain14.add("单价");
header2.add(cellContain14);
List<String> cellContain15 = new ArrayList<>();
cellContain15.add("本月出库");
cellContain15.add("金额");
header2.add(cellContain15);
List<String> cellContain16 = new ArrayList<>();
cellContain16.add("累计入库");
cellContain16.add("数量");
header2.add(cellContain16);
List<String> cellContain17 = new ArrayList<>();
cellContain17.add("累计入库");
cellContain17.add("单价");
header2.add(cellContain17);
List<String> cellContain18 = new ArrayList<>();
cellContain18.add("累计入库");
cellContain18.add("金额");
header2.add(cellContain18);
List<String> cellContain19 = new ArrayList<>();
cellContain19.add("累计出库");
cellContain19.add("数量");
header2.add(cellContain19);
List<String> cellContain20 = new ArrayList<>();
cellContain20.add("累计出库");
cellContain20.add("单价");
header2.add(cellContain20);
List<String> cellContain21 = new ArrayList<>();
cellContain21.add("累计出库");
cellContain21.add("金额");
header2.add(cellContain21);
List<String> cellContain22 = new ArrayList<>();
cellContain22.add("本月结存");
cellContain22.add("数量");
header2.add(cellContain22);
List<String> cellContain23 = new ArrayList<>();
cellContain23.add("本月结存");
cellContain23.add("单价");
header2.add(cellContain23);
List<String> cellContain24 = new ArrayList<>();
cellContain24.add("本月结存");
cellContain24.add("金额");
header2.add(cellContain24);
//excelWriter = EasyExcel.write(fileName).head(header).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
excelWriter = EasyExcel.write(fileName).head(header).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").needHead(Boolean.TRUE).build();
//表头写的次数
int num = 0;
for (int i = 0;i<3;i++) {
//合同名称表头
List<List<String>> header1 = new ArrayList<>();
List<String> cellContain2 = new ArrayList<>();
cellContain2.add("合同编号1/合同名称1"+i);
//添加22次
for (int j =0;j<22;j++){
header1.add(cellContain2);
}
WriteTable writeTable0 = EasyExcel.writerTable(num).needHead(Boolean.TRUE).head(header1).build();
WriteTable writeTable1 = EasyExcel.writerTable(num+1).needHead(Boolean.TRUE).head(header2).build();
num = num+2;
// 第一次写入会创建头
excelWriter.write(null, writeSheet, writeTable0);
// 第二次写如也会创建头,然后在第一次的后面写入数据
excelWriter.write(data(), writeSheet, writeTable1);
}
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
EasyExcel中复杂表头多次写入
最新推荐文章于 2024-04-30 15:08:48 发布