package com.gaotao.common.easyexcel; import com.alibaba.excel.write.handler.AbstractRowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteTableHolder; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; /** * 项目管理事项导出列宽处理器 * 用于控制各列的宽度 */ public class ProjectManagementItemsColumnWidthHandler extends AbstractRowWriteHandler { @Override public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) { Sheet sheet = writeSheetHolder.getSheet(); // 只在第一行设置列宽,避免重复设置 if (row.getRowNum() == 0) { // 序号列 - 较窄 sheet.setColumnWidth(0, 6 * 256); // 内容列 - 较宽 sheet.setColumnWidth(1, 30 * 256); // 时间(天)列 - 较窄 sheet.setColumnWidth(2, 8 * 256); // 计划完成日期列 - 中等 sheet.setColumnWidth(3, 12 * 256); // 完成进度子列(10%-100%)- 很窄,用于显示颜色块 for (int i = 4; i <= 13; i++) { sheet.setColumnWidth(i, 4 * 256); } // 完成进度%列 - 较窄 sheet.setColumnWidth(14, 10 * 256); // 实际完成日期列 - 中等 sheet.setColumnWidth(15, 12 * 256); // 负责人列 - 较窄 sheet.setColumnWidth(16, 8 * 256); // 完成状况列 - 较窄 sheet.setColumnWidth(17, 10 * 256); // 设置行高 sheet.setDefaultRowHeight((short) (20 * 20)); // 设置默认行高 } } }