用easypoi导出excel要合并列的方法

@ResponseBody
@RequestMapping(value = "excelOut")
public String excelOut(HttpServletRequest request, HttpServletResponse response) {

//建立一个模板所在文件夹及名称template/test.xlsx
TemplateExportParams params = new TemplateExportParams("template/test.xlsx", 0, 1);
Map<String, Object> map = new HashMap<>();

List<Map<String, String>> headList = new ArrayList<>();
     //这是活动表头,如果用户要设置的列数是不固定的,则在这里设定,如取一个list中对象作为多个列
for (int i = 0; i < 3; i++) {
Map<String, String> m = new HashMap<>();
m.put("name", "自定义表头" + i);
m.put("code", "t.code" + i);
headList.add(m);
}
map.put("head", headList);
     //组装数据
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < 8; i++) {
int s = new Random().nextInt(5) + 2;
for (int k = 0; k < s; k++) {
Map<String, Object> m = new HashMap<>();
m.put("g1", "id" + i);
m.put("g2", "2固定值" + i+(i % 2 == 0 ? "" : "\t"));
                m.put("g3", "3固定值" + i);
for (int j = 0; j < 3; j++) {
m.put("code" + j, i + "code" + j);
}
m.put("list_sex", i + "sex" + k);
list.add(m);
}
}
map.put("rows", list);

params.setColForEach(true);

Workbook workbook = ExcelExportUtil.exportExcel(params, map);
//需要合并的列,相当的数据就会合并,不合并则加(i % 2 == 0 ? "" : "\t")
PoiMergeCellUtil.mergeCells(workbook.getSheetAt(0), 3, 0, 1, 2, 3, 4, 5, 6, 7, 8);

// FileOutputStream fos = new FileOutputStream("D:/test"+System.currentTimeMillis()+".xlsx");//存在本地磁盘
// workbook.write(fos);
// fos.close();
//设置保存的文件名
String fileName = DateUtils.getYear() + "年" + DateUtils.getMonth() + "月" + DateUtils.getDay() + "日数据表_" + System.currentTimeMillis() + ".xlsx";
//在浏览器中保存导出
response.reset();
response.setContentType("application/octet-stream");
try {
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
ServletOutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}


//模板图片,可根据自己需要更改
 //建立一个模板所在文件夹及名称template/test.xlsx

 

转载于:https://www.cnblogs.com/aqihao/p/10144216.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值