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