easyexcel的简单应用

easyexcel的简单应用读(数据的解析)一行一行读,自定义一个监听类继承AnalysisEventListener,每读一行触发一个动作;首先定义一个实体类:@Data@NoArgsConstructor@AllArgsConstructor@HeadRowHeight(22)//表头行高,只能作用在类上。@ContentRowHeight(15)//内容行高,只能作用在类上,对所有行进行统一行高设置public class Student { /** * inde
摘要由CSDN通过智能技术生成

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"
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值