注解介绍

@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. }