1、自定义工具类
/**
* excel样式工具类
*/
public class StyleUtils {
public static HorizontalCellStyleStrategy createCenterStyle() {
//表头策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
WriteFont headWriteFont = new WriteFont();
// 表头设置字体大小
headWriteFont.setFontHeightInPoints((short) 11);
headWriteFont.setFontName("宋体");
headWriteCellStyle.setWriteFont(headWriteFont);
//内部策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setWrapped(true); // 设置自动换行
// 内容字体大小
WriteFont contentWriteFont = new WriteFont();
// 内容字体大小
contentWriteFont.setFontHeightInPoints((short) 11);
contentWriteFont.setFontName("宋体");
contentWriteCellStyle.setWriteFont(contentWriteFont);
//上下居中和水平居中
// 水平居中
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
// 上下居中
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
}
}
2、定义导出对象
@Data
public class User implements Serializable {
@ExcelProperty("用户名")
@ColumnWidth(30)
private String userName;
@ExcelProperty("创建时间")
@ColumnWidth(30)
private LocalDateTime createdTime;
}
3、使用方式
@PostMapping("/export")
@ApiOperation(value = "导出", notes = "导出")
public void export(HttpServletResponse response) throws IOException {
// 设置响应头信息
String fileName = "导出"+ LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN)+ ".xlsx";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里 URLEncoder.encode 防止文件名中文乱码
String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition",encodedFileName);
//模拟数据
List<User> userList = new ArrayList<>();
String userName = "张三"+","+"\n"+"李四";//使用换符合
User user = new User();
user.setUserName(userName);
user.setCreatedTime(LocalDateTime.now());
userList.add(user);
EasyExcel.write(response.getOutputStream(), User.class)
.excelType(ExcelTypeEnum.XLSX)
.sheet("导出记录")
.registerWriteHandler(StyleUtils.createCenterStyle())//使用自定义的样式
.doWrite(list);
}
1万+

被折叠的 条评论
为什么被折叠?



