在线教育项目-day05【实现EasyExcel对Excel操作】

1.引入依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>2.1.1</version>
</dependency>

还需要poi的依赖

2.写操作

1.创建一个实体类

package Excel;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class DemoData {
    //设置表头名称
    @ExcelProperty("学生编号")
    private int sno;

    //设置表头名称
    @ExcelProperty("学生姓名")
    private String sname;


}

2.测试代码

public class TestEasyExcel {
    public static void main(String[] args) {
        String fileName = "D:\1.xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, DemoData.class).sheet("写入方法一").doWrite(data());

        // 写法2,方法二需要手动关闭流
//        String fileName = "F:\112.xlsx";
        // 这里 需要指定写用哪个class去写
//        ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();
//        WriteSheet writeSheet = EasyExcel.writerSheet("写入方法二").build();
//        excelWriter.write(data(), writeSheet);
//        /// 千万别忘记finish 会帮忙关闭流
//        excelWriter.finish();

    }
    private static List<DemoData> data() {
        List<DemoData> list = new ArrayList<DemoData>();
        for (int i = 0; i < 10; i++) {
            DemoData data = new DemoData();
            data.setSno(i);
            data.setSname("张三"+i);
            list.add(data);
        }
        return list;
    }
}

 

 3. 读操作

1.更改实体类

public class DemoData {
//设置表头名称
@ExcelProperty(value = "学生编号",index = 0)
private int sno;

//设置表头名称
@ExcelProperty(value="学生姓名",index = 1)
private String sname;


}

2. 建立监听器

public class ExcelListenner extends AnalysisEventListener<DemoData> {
    //一行一行去读取excle内容
    @Override
    public void invoke(DemoData demoData, AnalysisContext analysisContext) {
        //创建list集合封装最终的数据
        System.out.println("***"+demoData);
    }
    //读取excel表头信息
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表头信息:"+headMap);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

3.main方法中

        String fileName = "D:\\1.xlsx";
        // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
        EasyExcel.read(fileName, DemoData.class, new ExcelListenner()).sheet().doRead();

原文地址:https://www.cnblogs.com/dmzna/p/12811022.html