Easyexcel自定义格式-头部样式


主要记录一下用easy做复杂的头部样式处理

最终效果如下:

 

 

 过程:

为了支持和方便后续不同的样式处理,此处以注解的方式注入拦截器,通过参数不同做不同的操作

1.正常的写excel操作

 

 

 2.正常的easy使用和头部样式注解(value为头部内容: 手动换行后面有做解释,type为模块名或编号)

 

 

 3.工具类里的写excel方法

 

 

 4.自定义写excel头部样式拦截器

 1 /**
 2  * 自定义excel头部样式拦截器
 3  * @author chenkun
 4  * @desc
 5  * @datetime 2020/9/30 14:33
 6  */
 7 
 8 public class StyleExcelHandler implements SheetWriteHandler {
 9 
10     @Override
11     public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
12 
13     }
14 
15     @Override
16     public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
17 
18         Class clazz = writeSheetHolder.getClazz();
19         ExcelHeadStyle annotation = (ExcelHeadStyle) clazz.getAnnotation(ExcelHeadStyle.class);
20         if (annotation != null) {
21             switch (annotation.type()) {
22                 case BASE:
23                     doBase(writeWorkbookHolder, annotation);
24                     break;
25                 case EXCEL_DSMD:
26                     doInstructor(writeWorkbookHolder, annotation);
27                     break;
28                 default:
29                     // doAnything
30                     break;
31             }
32         }
33 
34     }
35 
36     private void doInstructor(WriteWorkbookHolder writeWorkbookHolder, ExcelHeadStyle annotation) {
37         Workbook workbook = writeWorkbookHolder.getWorkbook();
38         Sheet sheet = workbook.getSheetAt(0);
39         // 合并单元格
40         CellRangeAddress cra =new CellRangeAddress(0, 0, 0, 10); // 起始行, 终止行, 起始列, 终止列
41         sheet.addMergedRegion(cra);
42         // 设置标题
43         Row row1 = sheet.createRow(0);//
44         row1.setHeight((short) 2200);
45 
46         Cell cell1 = row1.createCell(0);//47         // 标题内容(来自注解)
48         cell1.setCellValue(annotation.value());
49         CellStyle cellStyle = workbook.createCellStyle();
50         // 文字颜色
51         Font font = workbook.createFont();
52         font.setColor(IndexedColors.RED.getIndex());
53 //            if (i == 0) {// 第一行加粗
54 //                font.setBold(true);
55 //            }
56         cellStyle.setFont(font);
57         // 根据手动\n换行
58         cellStyle.setVerticalAlignment(VerticalAlignment.DISTRIBUTED);
59         cell1.setCellStyle(cellStyle);
60     }
61 
62     private void doBase(WriteWorkbookHolder writeWorkbookHolder, ExcelHeadStyle annotation) {
63         Workbook workbook = writeWorkbookHolder.getWorkbook();
64         Sheet sheet = workbook.getSheetAt(0);
65         // 设置标题
66         Row row1 = sheet.createRow(0);
67         row1.setHeight((short) 600);
68         Cell cell1 = row1.createCell(0);
69         // 标题内容(来自注解)
70         cell1.setCellValue(annotation.value());
71         CellStyle cellStyle = workbook.createCellStyle();
72 //        自动换行
73 //        cellStyle.setWrapText(true);
74 
75         // 文字颜色
76         Font font = workbook.createFont();
77         font.setColor(IndexedColors.RED.getIndex());
78         cellStyle.setFont(font);
79         // 平铺展开
80         cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
81         cell1.setCellStyle(cellStyle);
82     }
83 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM