EasyExcel中复杂表头多次写入

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();
    }
}

 效果图

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值