Easypoi生成excel并上传到文件服务器

简介:easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法

本案例主要是通过注解方式导出excel文档

集成需要的maven依赖

<!-- easyPoi -->
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.2.0</version>
</dependency>

实体类

@ExcelTarget("teacherEntity")
public class StudentEntity implements java.io.Serializable {
   private String id;
   @Excel(name = "学生姓名", height = 20, width = 30, isImportField = "true_st")
   private String name;
   @Excel(name = "学生性别", replace = { "男_1", "女_2" }, suffix = "生", isImportField = "true_st")
   private int sex;
   @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd", isImportField = "true_st", width = 20)
   private Date birthday;
   @Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd")
   private Date registrationDate;
}

@Excel注解的使用

属性

类型

默认值

功能

name

String

null

列名,支持name_id

needMerge

boolean

fasle

是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)

orderNum

String

“0”

列的排序,支持name_id

replace

String[]

{}

值得替换 导出是{a_id,b_id} 导入反过来

savePath

String

“upload”

导入文件保存路径,如果是图片可以填写,默认是upload/className/ IconEntity这个类对应的就是upload/Icon/

type

int

1

导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本

width

double

10

列宽

height

double

10

列高,后期打算统一使用@ExcelTarget的height,这个会被废弃,注意

isStatistics

boolean

fasle

自动统计数据,在追加一行统计,把所有数据都和输出这个处理会吞没异常,请注意这一点

isHyperlink

boolean

false

超链接,如果是需要实现接口返回对象

isImportField

boolean

true

校验字段,看看这个字段是不是导入的Excel中有,如果没有说明是错误的Excel,读取失败,支持name_id

exportFormat

String

“”

导出的时间格式,以这个是否为空来判断是否需要格式化日期

importFormat

String

“”

导入的时间格式,以这个是否为空来判断是否需要格式化日期

format

String

“”

时间格式,相当于同时设置了exportFormat 和 importFormat

databaseFormat

String

“yyyyMMddHHmmss”

导出时间设置,如果字段是Date类型则不需要设置 数据库如果是string 类型,这个需要设置这个数据库格式,用以转换时间格式输出

numFormat

String

“”

数字格式化,参数是Pattern,使用的对象是DecimalFormat

imageType

int

1

导出类型 1 从file读取 2 是从数据库中读取 默认是文件 同样导入也是一样的

suffix

String

“”

文字后缀,如% 90 变成90%

isWrap

boolean

true

是否换行 即支持\n

mergeRely

int[]

{}

合并单元格依赖关系,比如第二列合并是基于第一列 则{0}就可以了

mergeVertical

boolean

fasle

纵向合并内容相同的单元格

fixedIndex

int

-1

对应excel的列,忽略名字

isColumnHidden

boolean

false

导出隐藏列

@ExcelTarget注解的使用

属性

类型

默认值

功能

value

String

null

定义ID

height

double

10

设置行高

fontSize

short

11

设置文字大小

@ExcelEntity注解的使用

属性

类型

默认值

功能

id

String

null

定义ID

@ExcelCollection注解的使用

属性

类型

默认值

功能

needMerge

boolean

fasle

是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)

name

String

null

定义集合列名,支持nanm_id

orderNum

int

0

排序,支持name_id

type

Class<?>

ArrayList.class

导入时创建对象使用

生成Excel代码如下:

Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("计算机一班学生"),TeacherEntity.class, new TeacherEntity ("计算机一班学生")));

导出如下:

easypoi 设置templateexportparams 数值类型 easypoi生成excel_开发语言