EasyExcel 样式注解(笔记)
https://easyexcel.opensource.alibaba.com/
gradle:
implementation 'com.alibaba:easyexcel:3.1.1'
颜色值表格:
颜色对照表:
颜色 | 测试 | Class名称 | short |
Test颜色 | Black | 8 | |
Test颜色 | Brown | 60 | |
Test颜色 | Olive_Green | 59 | |
Test颜色 | Dark_Green | 58 | |
Test颜色 | Dark_Teal | 56 | |
Test颜色 | Dark_Blue | 18 | |
Test颜色 | Indigo | 62 | |
Test颜色 | Grey_80_PERCENT | 63 | |
Test颜色 | Dark_Red | 16 | |
Test颜色 | Orange | 53 | |
Test颜色 | DARK_YELLOW | 19 | |
Test颜色 | Green | 17 | |
Test颜色 | Teal | 21 | |
Test颜色 | Blue | 12 | |
Test颜色 | Blue_Grey | 54 | |
Test颜色 | Grey_50_PERCENT | 23 | |
Test颜色 | Red | 10 | |
Test颜色 | LIGHT_ORANGE | 52 | |
Test颜色 | LIME | 50 | |
Test颜色 | SEA_GREEN | 57 | |
Test颜色 | AQUA | 49 | |
Test颜色 | LIGHT_BLUE | 48 | |
Test颜色 | VIOLET | 20 | |
Test颜色 | GREY_40_PERCENT | 55 | |
Test颜色 | Pink | 14 | |
Test颜色 | Gold | 51 | |
Test颜色 | Yellow | 13 | |
Test颜色 | BRIGHT_GREEN | 11 | |
Test颜色 | TURQUOISE | 15 | |
Test颜色 | SKY_BLUE | 40 | |
Test颜色 | Plum | 61 | |
Test颜色 | GREY_25_PERCENT | 22 | |
Test颜色 | Rose | 45 | |
Test颜色 | Tan | 47 | |
Test颜色 | LIGHT_YELLOW | 43 | |
Test颜色 | LIGHT_GREEN | 42 | |
Test颜色 | LIGHT_TURQUOISE | 41 | |
Test颜色 | PALE_BLUE | 44 | |
Test颜色 | LAVENDER | 46 | |
Test颜色 | White | 9 | |
Test颜色 | CORNFLOWER_BLUE | 24 | |
Test颜色 | LEMON_CHIFFON | 26 | |
Test颜色 | MAROON | 25 | |
Test颜色 | ORCHID | 28 | |
Test颜色 | CORAL | 29 | |
Test颜色 | ROYAL_BLUE | 30 | |
Test颜色 | LIGHT_CORNFLOWER_BLUE | 31 | |
Test颜色 | AUTOMATIC | 64 |
注解
11个注解
-
@ExcelProperty
-
@ColumnWith 列宽
-
@ContentFontStyle 文本字体样式
-
@ContentLoopMerge 文本合并
-
@ContentRowHeight 文本行高度
-
@ContentStyle 文本样式
-
@HeadFontStyle 标题字体样式
-
@HeadRowHeight 标题高度
-
@HeadStyle 标题样式
-
@ExcelIgnore 忽略项
-
@ExcelIgnoreUnannotated 忽略未注解
字段注解 | 类注解 |
---|---|
@ColumnWith(列宽) | @ColumnWidth(全局列宽) |
@ExcelProperty(字段配置) | @HeadFontStyle(头样式) |
@HeadRowHeight(标题高度) | |
@ContentFontStyle(内容字体样式) | |
@ContentRowHeight(内容高度) |
@ExcelProperty
必要的一个注解,注解中有三个参数value
,index
,converter
分别代表列明,列序号,数据转换方式value
和index
只能二选一,通常不用设置converter
1.value 通过标题文本对应
2.index 通过文本行号对应
3.converter 转换器,通常入库和出库转换使用,如性别入库0和1,出库男和女
最佳实践
public class ImeiEncrypt {
@ExcelProperty(value = "值")
private String valueField;
@ExcelProperty(value = 1,converter =IndustryIdConverter.class)
private String indexField;
@ExcelProperty(value = "值对应和转换器",converter =IndustryIdConverter.class)
private String valueAndConverterField;
}
@ColumnWith
设置列宽度,只有一个参数value,value的单位是字符长度,最大可以设置255个字符,因为一个excel单元格最大可以写入的字符个数就是255个字符。
最佳实践
public class ImeiEncrypt {
@ColumnWidth(value = 18)
private String imei;
}
@ContentFontStyle
用于设置单元格内容字体格式的注解
参数:
参数 | 含义 |
---|---|
fontName | 字体名称 |
fontHeightInPoints | 字体高度 |
italic | 是否斜体 |
strikeout | 是否设置删除水平线 |
color | 字体颜色 |
typeOffset | 偏移量 |
underline | 下划线 |
bold | 是否加粗 |
charset | 编码格式 |
@ContentLoopMerge
用于设置合并单元格的注解
参数:
参数 | 含义 |
---|---|
eachRow | |
columnExtend |
@ContentRowHeight
用于设置行高
参数:
参数 | 含义 |
---|---|
value | 行高,-1 代表自动行高 |
@ContentStyle
设置内容格式注解
参数:
参数 | 含义 |
---|---|
dataFormat | 日期格式 |
hidden | 设置单元格使用此样式隐藏 |
locked | 设置单元格使用此样式锁定 |
quotePrefix | 在单元格前面增加`符号,数字或公式将以字符串形式展示 |
horizontalAlignment | 设置是否水平居中 |
wrapped | 设置文本是否应换行。将此标志设置为true 通过在多行上显示使单元格中的所有内容可见 |
verticalAlignment | 设置是否垂直居中 |
rotation | 设置单元格中文本旋转角度。03版本的Excel旋转角度区间为-90°90°,07版本的Excel旋转角度区间为0°180° |
indent | 设置单元格中缩进文本的空格数 |
borderLeft | 设置左边框的样式 |
borderRight | 设置右边框样式 |
borderTop | 设置上边框样式 |
borderBottom | 设置下边框样式 |
leftBorderColor | 设置左边框颜色 |
rightBorderColor | 设置右边框颜色 |
topBorderColor | 设置上边框颜色 |
bottomBorderColor | 设置下边框颜色 |
fillPatternType | 设置填充类型 |
fillBackgroundColor | 设置背景色 |
fillForegroundColor | 设置前景色 |
shrinkToFit | 设置自动单元格自动大小 |
@HeadFontStyle
用于定制标题字体格式
参数 | 含义 |
---|---|
fontName | 设置字体名称 |
fontHeightInPoints | 设置字体高度 |
italic | 设置字体是否斜体 |
strikeout | 是否设置删除线 |
color | 设置字体颜色 |
typeOffset | 设置偏移量 |
underline | 设置下划线 |
charset | 设置字体编码 |
bold | 设置字体是否加粗 |
@HeadRowHeight
设置标题行行高
参数 | 含义 |
---|---|
value | 设置行高,-1代表自动行高 |
@HeadStyle
设置标题样式
参数 | 含义 |
---|---|
dataFormat | 日期格式 |
hidden | 设置单元格使用此样式隐藏 |
locked | 设置单元格使用此样式锁定 |
quotePrefix | 在单元格前面增加`符号,数字或公式将以字符串形式展示 |
horizontalAlignment | 设置是否水平居中 |
wrapped | 设置文本是否应换行。将此标志设置为true 通过在多行上显示使单元格中的所有内容可见 |
verticalAlignment | 设置是否垂直居中 |
rotation | 设置单元格中文本旋转角度。03版本的Excel旋转角度区间为-90°90°,07版本的Excel旋转角度区间为0°180° |
indent | 设置单元格中缩进文本的空格数 |
borderLeft | 设置左边框的样式 |
borderRight | 设置右边框样式 |
borderTop | 设置上边框样式 |
borderBottom | 设置下边框样式 |
leftBorderColor | 设置左边框颜色 |
rightBorderColor | 设置右边框颜色 |
topBorderColor | 设置上边框颜色 |
bottomBorderColor | 设置下边框颜色 |
fillPatternType | 设置填充类型 |
fillBackgroundColor | 设置背景色 |
fillForegroundColor | 设置前景色 |
shrinkToFit | 设置自动单元格自动大小 |
@ExcelIgnore
不将该字段转换成Excel
@ExcelIgnoreUnannotated
没有注解的字段都不转换
EasyExcel 筛选和冻结固定表头
package com.galileotime.oa.business.ums.utils; import com.alibaba.excel.write.handler.SheetWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; /** * EasyExcel 筛选和冻结固定表头 * @author HeZeMin * @className FreezeAndFilter * @date 2023/3/30 15:10 */ public class FreezeAndFilter implements SheetWriteHandler{ public int colSplit = 0, rowSplit = 1, leftmostColumn = 0, topRow = 1; public String autoFilterRange = "1:1"; @Override public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { } @Override public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { Sheet sheet = writeSheetHolder.getSheet(); sheet.createFreezePane(colSplit, rowSplit, leftmostColumn, topRow); sheet.setAutoFilter(CellRangeAddress.valueOf(autoFilterRange)); } }
表头被冻结固定住了。
效果: