java导出利用POI技术合并单元格(列)
1,原标题,表头导出样式
标题样式
表头样式
2,现期望样式
3,步骤如下
1. 业务层
public void exportOffsetResult(HttpServletResponse response, RedirectAttributes redirectAttributes, StuPaycostOwe records) {
List<StuPaycostOwe> findListRecords = findListRecords(records);
if(!findListRecords.isEmpty()) {
String fileName=findListRecords.get(0).getGrade()+"导入反馈"+DateUtils.getDate("yyyy年MM月dd日 HH时mm分ss秒");
List<Map<String, Object>> resultLM = createExcelMsg(findListRecords);
List< List<String>> listStr=Lists.newArrayList();//表头的List集合
List<Integer> intRow=Lists.newArrayList();//存放那些行不需要添加背景填充和数据行格式一样如果不需要则置为空list
intRow.add(0);
//设置表头数据
List<String> li0=Lists.newArrayList();
List<String> li1=Lists.newArrayList();
List<String> li2=Lists.newArrayList();
//设置需要取值的键值`在这里插入代码片`
List<String> liKey=Lists.newArrayList();
//设置需要合并的单元格
List<String> rli=Lists.newArrayList();
rli.add("1,2,0,0");
rli.add("1,2,1,1");
rli.add("1,2,2,2");
rli.add("1,2,3,3");
rli.add("1,2,4,4");
rli.add("1,2,5,5");
rli.add("1,2,6,6");
rli.add("1,2,7,7");
rli.add("1,2,8,8");
rli.add("1,2,9,9");
rli.add("1,2,10,10");
rli.add("1,2,11,11");
rli.add("1,2,12,12");
rli.add("1,2,13,13");
rli.add("1,2,14,14");
rli.add("1,2,15,15");
rli.add("1,2,16,16");
rli.add("1,2,17,17");
li0.add(fileName);
li1.add("序号");li2.add("");
li1.add("学年");li2.add("");
li1.add("年级");li2.add("");
li1.add("院系");li2.add("");
li1.add("专业");li2.add("");
li1.add("班级");li2.add("");
li1.add("学生姓名");li2.add("");
li1.add("学号");li2.add("");
li1.add("考生号");li2.add("");
li1.add("身份证号");li2.add("");
li1.add("学生类型");li2.add("");
li1.add("宿舍类型");li2.add("");
li1.add("助学贷款");li2.add("");
li1.add("建档立卡");li2.add("");
li1.add("缓缴金额");li2.add("");
li1.add("应缴金额");li2.add("");
li1.add("实缴金额");li2.add("");
li1.add("欠费金额");li2.add("");
List<NewCostTuitionFees> payDetails = findListRecords.get(0).getPayDetails();
rli.add("1,1,18,"+(payDetails.size()+18-1)+"");
for (int i = 0; i < payDetails.size(); i++) {
li2.add(payDetails.get(i).getCostName());
if(i == 0) {
li1.add("缴费明细");
}else {
li1.add("");
}
}
List<ChargeWay> payMethods = findListRecords.get(0).getPayMethods();
rli.add("1,1,"+(payDetails.size()+18)+","+(payDetails.size()+18+payMethods.size()-1)+"");
for (int i = 0; i < payMethods.size(); i++