废话不说,show code!!!
String fileName ="统计_".concat(DateUtil.format(DateUtil.date(), "yyyyMMdd").toString()).concat(".xlsx");
cn.hutool.poi.excel.ExcelWriter excelWriter = null;
getResponse().setContentType("appllication/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
getResponse().setCharacterEncoding("utf-8");
fileName = URLEncoder.encode(fileName, "utf-8").replace("\\+", "%20");
getResponse().setHeader("Content-disposition", "attachment;filename*=utf8''" + fileName + ".xlsx");
try {
excelWriter = ExcelUtil.getWriter(true);
for (model node : list) {
//选择sheet
excelWriter.setSheet(list.indexOf(node));
Workbook wb = excelWriter.getSheet().getWorkbook();
//设置sheet名称
wb.setSheetName(list.indexOf(node), node.getName());
//设置列宽,先设置宽度再合并列,否则会按照合并后的行来设置宽
excelWriter.setColumnWidth(0, 30);
excelWriter.setColumnWidth(1, 100);
//设置自动换行•
CellStyle cellStyle=excelWriter.getStyleSet().getCellStyle();
cellStyle.setWrapText(true);
//设置左对齐
cellStyle.setAlignment(HorizontalAlignment.LEFT);
//设置第一行合并,向后合并1列,总计2列
excelWriter.merge(1, node.getName().concat("信息采集"));
List<NodeExportDto> listdto = nodeService.getdto(node);
//写入sheet,不输出outstream
excelWriter.write(list);
}
} catch (Exception e) {
} finally {
if (excelWriter != null) {
//当flush和close时才写
excelWriter.flush(getResponse().getOutputStream());
excelWriter.close();
}
}
导出xlsx如下:(sheet名、和并列、左对齐、自动换行)