示例一:
//表头样式
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//设置表头居中对齐
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
//内容样式
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
//设置内容靠左对齐
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
//设置样式
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
String fileName = "模型命令_" + DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now());
response.setContentType("application/msexcel");
fileName = URLEncoder.encode(fileName, CharsetNames.UTF_8) + ".xlsx";
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
EasyExcel.write(response.getOutputStream(), CommandExcelVO.class)
.excelType(ExcelTypeEnum.XLSX)
.sheet("命令")
.registerWriteHandler(horizontalCellStyleStrategy)
.doWrite(excelList);
示例二:
@ApiOperation("导出")
@PostMapping("/export")
public void export(@RequestBody MonitorLogParam param, HttpServletResponse response) throws Exception {
List<IotMonitorLog> list = this.monitorLogService.selectList(param);
//表头样式
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//设置表头居中对齐
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
//内容样式
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
//设置内容靠左对齐
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
String fileName = "xxx" + DateUtil.format(new Date(), "yyyyMMddHHmmss");
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
EasyExcel.write(getOutputStream(fileName, response), MonitorLogExcelVo.class)
.excelType(ExcelTypeEnum.XLS).sheet("xxx").registerWriteHandler(horizontalCellStyleStrategy)
.doWrite(packageExcelVo(list));
return;
}
/**
* 表对象封装成excel对象
* @param list
* @return
*/
private List<MonitorLogExcelVo> packageExcelVo(List<IotMonitorLog> list) {
if (Objects.isNull(list) || list.isEmpty()){
return Collections.emptyList();
}
return list.stream().map(record ->{
return MonitorLogExcelVo.builder().monitorType(record.getMonitorType())
.claimantName(record.getClaimantName()).name(record.getName())
.claimStatus(record.getClaimStatus()).claimTime(record.getClaimTime())
.createTime(record.getCreateTime()).describe(record.getDescribe())
.build();
}).collect(Collectors.toList());
}
private OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
response.setContentType("application/msexcel");
response.setHeader("Content-disposition", "attachment;filename=" + new String(fileName.getBytes(CharsetNames.UTF_8), "iso8859-1") + ".xls");
return response.getOutputStream();
}
ExcelVO中注解示例:
public class MonitorLogExcelVo {
@ExcelProperty(value = "名称", index = 1)
@ColumnWidth(20)
private String name;
@ExcelProperty(value = "监控类型", index = 2, converter = MonitorTypeConverter.class)
@ColumnWidth(25)
private String monitorType;
@ExcelProperty(value = "描述", index = 3)
@ColumnWidth(40)
private String describe;
}
示例二ChatGPT解析:
这段代码使用了 EasyExcel 库,用于将数据写入 Excel 文件中。
首先,定义了一个文件名 `fileName`,格式为 "xxx_当前时间",其中 `DateUtil.format(new Date(), "yyyyMMddHHmmss")` 用于将当前时间格式化为字符串。
接着,定义了一个 `HorizontalCellStyleStrategy` 对象 `horizontalCellStyleStrategy`,用于设置 Excel 表头和内容的样式。
然后,使用 `EasyExcel.write()` 方法创建一个 Excel 写入器,并指定输出流和数据类型(这里使用的是 XLS 格式),并指定工作表名称为 "监控异常记录"。
接下来,注册了一个写入处理器 `horizontalCellStyleStrategy`,用于设置表头和内容的样式。
最后,调用 `doWrite()` 方法将数据写入 Excel 文件中,其中 `packageExcelVo(list)` 用于将数据转换为 `MonitorLogExcelVo` 类型的列表。