注解介绍

@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


表格功能属性

注解使用案例

实现效果

  1. package cn.zzhardy.utils.poi.test.example;
  2. import java.util.List;
  3. import java.util.Map;
  4. import cn.zzhardy.annotation.SheetField;
  5. import cn.zzhardy.annotation.SheetField.FunctionType;
  6. import lombok.Data;
  7. import org.apache.poi.ss.usermodel.HorizontalAlignment;
  8. /**
  9. * @Author:朱志辉
  10. * @Date:2021/03/09
  11. * @Function: 表格报告显示形式
  12. */
  13. @Data
  14. public class ReportBody {
  15. @SheetField(name = "表单报告生成", sort = 1, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  16. titleBackground = "27,79,147", height = 30, fontColor = "#ffffff", fontSize = 14, isBold = true)
  17. private String title;
  18. @SheetField(name = " 柱状图报告统计", sort = 2, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  19. titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold = true)
  20. private String digitalTitle;
  21. @SheetField(name = "柱状图报告统计", sort = 3, same = true, functionType = FunctionType.HISTOGRAM, horizontalMergeNum = 5,
  22. height = 120)
  23. private Map<String, Object> digitalDetail;
  24. @SheetField(name = " 饼状图报告统计", sort = 4, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  25. titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold = true)
  26. private String digitalTitle1;
  27. @SheetField(name = "饼状图报告统计", sort = 5, same = true, functionType = FunctionType.PIE_CHART, horizontalMergeNum = 5,
  28. height = 120)
  29. private Map<String, Object> digitalDetail1;
  30. @SheetField(name = " 折线图报告统计", sort = 6, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  31. titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold = true)
  32. private String digitalTitle2;
  33. @SheetField(name = "折线图报告统计", sort = 7, same = true, functionType = FunctionType.LINE_CHART, horizontalMergeNum = 5,
  34. height = 120)
  35. private Map<String, Object> digitalDetail2;
  36. @SheetField(name = " 日志报告详情", sort = 8, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  37. titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold=true)
  38. private String logListTitle;
  39. @SheetField(name = "日志", sort = 8, same = true)
  40. private List<SysLog> logList;
  41. @SheetField(name = " 日志报警报告详情", sort = 9, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  42. titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold=true)
  43. private String logWarnListTitle;
  44. @SheetField(name = "日志报警", sort = 10, same = true)
  45. private List<SysLog> logWarnList;
  46. @SheetField(name = " 用户信息详情", sort = 11, same = true, functionType = FunctionType.TITLE, horizontalMergeNum = 5,
  47. titleBackground = "217, 225, 242", alignment = HorizontalAlignment.LEFT, isBold=true)
  48. private String sysUsersTitle;
  49. @SheetField(name = "用户信息", sort = 12, same = true)
  50. private List<SysUser> sysUsers;
  51. }