注解介绍
@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: 表格报告显示形式
*/
@Data
public 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;
}