文章目录
easyexcel的简单应用
读(数据的解析)
一行一行读,自定义一个监听类继承AnalysisEventListener,每读一行触发一个动作;
首先定义一个实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
@HeadRowHeight(22)//表头行高,只能作用在类上。
@ContentRowHeight(15)//内容行高,只能作用在类上,对所有行进行统一行高设置
public class Student {
/**
* index用来设置列的顺序,从0开始,如果跳过了某个index,则多出来一个空列。
*/
@ExcelProperty(value = "ID",index = 5)
@ExcelIgnore
private String id;
@ExcelProperty(value = {
"学员信息表","性别"},index = 1)
private String gender;
@ExcelProperty(value = {
"学员信息表","姓名"},index = 0)
@ColumnWidth(40)//可以设置在属性上或者类上
private String name;
@ExcelProperty(value = {
"学员信息表","年龄"},index = 2)
private Integer age;
@ExcelProperty(value = {
"学员信息表","出生日期"},index = 3)
@ColumnWidth(20)
@DateTimeFormat("yyyy/MM/dd")
private Date birthday;
}
监听类:
/**
* @author Hanxiaohan
* @date 2021/04/25 14:10
* @since 1.0
* <p>Copyright: Copyright (c) 2021</p>
*
* 读取文档的监听器类
* 加入继承类的泛型,避免类型转换
*
*
*/
@Component
@Scope("prototype")//多例
public class HxhListener extends AnalysisEventListener<Student> {
/**
*
* @param student 每次读取到的数据封装的对象
* @param context
* 每读一行内容都会调用一次invoke
*/
@Override
public void invoke(Student student, AnalysisContext context) {
System.out.println("student= "+student);
}
/**
* 读取完整个文档之后调用的方法
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
测试数据读取:
/**
* 工作簿
* sheet页(工作表)
*
* 测试读
*/
@Autowired
private HxhListener hxhListener;
@Test
void contextLoads1() {
//获得一个工作簿对象,获得工作表对象,读取工作表中内容
/**
* Build excel the read
*
* @param file
* File to read.文件路径
* @param head
* Annotate the class for configuration information.
* 文件中每一行数据要存储到的实体类型的class对象,表头
* @param readListener
* Read listener.
* 监听器:每读一行,都会调用一次该对象的invoke,在
* invoke可以操作使用读取到的数据
* @return Excel reader builder.
*/
//获取一个工作簿
//监听器设置为多例的,使用@Scope("prototype")
ExcelReaderBuilder readWorkBook = EasyExcel.read("akaman.xlsx", Student.class, hxhListener);
//默认读取第一个工作表
ExcelReaderSheetBuilder sheet = readWorkBook.sheet();
//读内容
sheet.doRead();
}
测试写入excel
/**
* 测试写
* 将Student实例写入excel
* 工作簿+工作表
*/
@Test
void contextLoads2() {
ExcelWriterBuilder writeWokeBook = EasyExcel.write("mikasa.xlsx"