注解介绍
@SheetField注解能够实现,单个Excel文件生成单个工作簿或多个工作簿,同时也能够支持针对单个工作簿能够使用柱状图、折线图、饼状图、垂直合并单元格等多种sheet功能
@SheetField所修饰的所有属性,均为对表格Sheet工作簿页操作,所修饰的属性数据类型将决定在当前sheet工作簿页中所产生的的效果,当前实现复杂的功能效果完全取决于属性和属性所修饰的数据类型
可通过多种@SheetField的属性实现以上多种功能,其中@SheetField必须包含以下属性:name、sort, 其他属性可根据需要哪些功能追加相应的属性,配置属性后,只需在指定的类中插入数据即可。
注意事项:
@SheetField注解基于@Excel注解,支持@Excel所有属性所生成的功能效果,可将@Excel所产生的功能视为相应的子模块,子模块属性与数据组成的子模块,将决定整个工作簿的功能效果。
@Excel属性详解
表格基本必须属性
| 属性名 | 描述 | 格式 | 值格式 | 默认值 |
|---|---|---|---|---|
| name | 导出到Excel中的title名字 | String | “” | 无 |
| sort | 导出时在excel中排序 | Int | 0 | |
| same | 在同一个sheet, true则在上一个SheetField注释的数据集合在同一个sheet内,直到下一个为false时创建新的sheet | boolean | false | |
| functionType | 为兼容只显示一行title, same必须为true, 且只修饰字符串类型 FunctionType类型,包含: 1. TITLE :标题; 2.HISTOGRAM :柱状图; 3. PIE_CHART :饼状图; 4. LINE_CHART :折线图 |
ColumnType | 默认为标题: FunctionType.TITLE |
标题 |
| horizontalMergeNum | 与titleOnly共同使用,只为显示多上单元格,水平合并单元格,精确的合并每一个单元格 | int | 0 | 0 |
| titleBackground | 表格title的背景颜色, r,g,b(217,225,242) 注意: 末尾功能符号,当前类@Excel sort排序最大的一列,进行使用,才可以显示效果 |
int | “” | 无 |
| fontColor | 单元格字体颜色 | String | “” | 无 |
| fontSize | 单元格字体大小 | String | 14 | 14 |
| isBold | 是否加粗 | boolean | false | |
| alignment | 字体显示, HorizontalAlignment枚举属性 | String | HorizontalAlignment.CENTER | HorizontalAlignment.CENTER |
| height | 导出时在excel中每个列的高度 | int | 14 | 14 |
表格功能属性
注解使用案例
实现效果
package cn.zzhardy.utils.poi.test.example;import java.util.List;import java.util.Map;import cn.zzhardy.annotation.SheetField;import cn.zzhardy.annotation.SheetField.FunctionType;import lombok.Data;import org.apache.poi.ss.usermodel.HorizontalAlignment;/*** @Author:朱志辉* @Date:2021/03/09* @Function: 表格报告显示形式*/@Datapublic class ReportBody {@SheetField(name = "表单报告生成", sort = 1, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "27,79,147", height = 30, fontColor = "#ffffff", fontSize = 14, isBold = true)private String title;@SheetField(name = " 柱状图报告统计", sort = 2, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold = true)private String digitalTitle;@SheetField(name = "柱状图报告统计", sort = 3, same = true, functionType = FunctionType.HISTOGRAM, horizontalMergeNum = 5,height = 120)private Map<String, Object> digitalDetail;@SheetField(name = " 饼状图报告统计", sort = 4, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold = true)private String digitalTitle1;@SheetField(name = "饼状图报告统计", sort = 5, same = true, functionType = FunctionType.PIE_CHART, horizontalMergeNum = 5,height = 120)private Map<String, Object> digitalDetail1;@SheetField(name = " 折线图报告统计", sort = 6, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold = true)private String digitalTitle2;@SheetField(name = "折线图报告统计", sort = 7, same = true, functionType = FunctionType.LINE_CHART, horizontalMergeNum = 5,height = 120)private Map<String, Object> digitalDetail2;@SheetField(name = " 日志报告详情", sort = 8, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold=true)private String logListTitle;@SheetField(name = "日志", sort = 8, same = true)private List<SysLog> logList;@SheetField(name = " 日志报警报告详情", sort = 9, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold=true)private String logWarnListTitle;@SheetField(name = "日志报警", sort = 10, same = true)private List<SysLog> logWarnList;@SheetField(name = " 用户信息详情", sort = 11, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold=true)private String sysUsersTitle;@SheetField(name = "用户信息", sort = 12, same = true)private List<SysUser> sysUsers;}
