EasyExcel 自定义表头颜色
public void export(ObjectDTO dto, HttpServletResponse response) { try { if (ObjectUtils.isEmpty(dto.getObjNumberList())) { throw new BusinessException("编号不允许为空"); } ListResp result = objectService.getListResp(dto); if (ObjectUtils.isEmpty(result) || ObjectUtils.isEmpty(result.getList())) { return; } dto.getColumnList().addAll(getRequiredColumnList()); String encodedFileName = URLEncoder.encode(LocalDate.now().toString() + "-" + dto.getSheetName() + ".xlsx", "UTF-8"); List<T> writeList = convertMapToList(result.getList(), this.entityClass); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); response.setHeader("Access-Control-Expose-Headers", "Content-disposition"); response.setHeader("Content-disposition", "attachment;filename=" + encodedFileName + ""); // 自定义策略 Set<Integer> yellowRowsSet = new HashSet<>(getRequiredColumnIndex()); ObjCellWriteHandler seedDemandCellWriteHandler = new ObjCellWriteHandler(yellowRowsSet); // 导出 Excel 文件 EasyExcel.write(response.getOutputStream(), this.entityClass) .sheet(dto.getSheetName()) .includeColumnFiledNames(dto.getColumnList()) .registerWriteHandler(new CustomCellWriteWidthHandle()) /*自适应列宽*/ .registerWriteHandler(seedDemandCellWriteHandler) .doWrite(writeList); } catch (Exception e) { e.printStackTrace(); log.error("对象导出异常,{}", e); } }
public class ObjCellWriteHandler implements CellWriteHandler { /** * 导出字段索引 */ private final Set<Integer> rowIndex; public ObjCellWriteHandler(Set<Integer> rowIndex) { this.rowIndex = rowIndex; } @Override public void afterCellDispose(CellWriteHandlerContext context) { // 判断当前行是否在yellowRowIndex's中 if (context.getHead() && rowIndex.contains(context.getColumnIndex())) { // 设置背景颜色,也可以设置字体等其它元素 WriteCellData<?> cellData = context.getFirstCellData(); WriteCellStyle writeCellStyle = cellData.getOrCreateStyle(); writeCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); writeCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2022-07-01 数据模型(Data Model)