You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.0 KiB

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