读取Excel的N中方式

  • spring boot 继承EsayExcel 实现excel的文件上传下载

    导入依赖

    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.1.1</version>
    </dependency>

    创建excel表实现类

    @Data
    public class ReadData {
    // 设置列对应的属性
    @ExcelProperty(value = "学生编号",index = 0)
    private Integer no;
    @ExcelProperty(value = "学生姓名",index = 1)
    private String name;
    }

    controller写法

    /**
    * 上传execl文件,解析数据到数据库
    * @param file
    * @return
    */
    @ApiOperation("上传excel,解析excel接口")
    @PostMapping("uploadExcel")
    public R uploadExcel(MultipartFile file){
    eduSubjectService.uploadExcelFile(file);
    return R.ok();
    }

    excel 读取数据的监听 主要是继承AnalysisEventListener之后,重写invoke方法,然后在里面处理数据

    public class ExcelListener extends AnalysisEventListener<ReadData> {

    List<ReadData> list = new ArrayList<ReadData>();

    // 一行一行去读取excel内容
    @Override
    public void invoke(ReadData readData, AnalysisContext analysisContext) {
    System.out.println(readData);
    list.add(readData);
    }

    // 读取excel表头信息
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
    System.out.println("表头信息:"+headMap);
    }


    // 读取完成后执行
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

    }

    文件下载

    创建excel实体类

    @Data
    public class WriteData {
    // 设置表头属性名称
    @ExcelProperty("学生编号")
    private Integer no;
    @ExcelProperty("学生姓名")
    private String name;
    }

    测试test写法

    public class TestExcelWriteData {
    public static void main(String[] args) {
    // 写法1
    String fileName = "D:\\excel\\11.xlsx";
    // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
    // 如果这里想使用03 则 传入excelType参数即可
    EasyExcel.write(fileName, WriteData.class).sheet("写入方法一").doWrite(data());
    }
    //循环设置要添加的数据,最终封装到list集合中
    private static List<WriteData> data() {
    List<WriteData> list = new ArrayList<WriteData>();
    for (int i = 0; i < 10; i++) {
    WriteData data = new WriteData();
    data.setNo(i);
    data.setName("张三"+i);
    list.add(data);
    }
    return list;
    }
    }
  • java POI上传excel的简单调用

  • Spring Boot+poi实现excel文件上传&下载