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