springboot实现EasyExcel对Excel读和写操作

本文详细介绍了如何使用SpringBoot结合EasyExcel进行Excel数据的写入和读取,包括写操作的步骤、读操作的基本示例以及如何将读取的数据保存到数据库。文中给出了具体的依赖引入、实体类创建、监听器实现和测试方法。
摘要由CSDN通过智能技术生成

一、写操作(将数据写入到excel文件)

GitHub地址参照:https://github.com/alibaba/easyexcel

https://www.yuque.com/easyexcel/doc/fill

https://github.com/alibaba/easyexcel/blob/master/quickstart.md

https://github.com/oukele/EasyExcelDemo

1.引入依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.1</version>
    </dependency>
    <!--xls-->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
</dependencies>

2.创建实体类,这里用的lombok生成get和set。

package com.stu.codeGenerator.excel;

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

@Data
public class DemoDataExcel {

    //设置Excel表头名称

    @ExcelProperty("学生编号")
    private Integer sno;

    @ExcelProperty("学生姓名")
    private String sname;

}

3.测试方法(两种方式都可以)

方法1

package com.stu.codeGenerator.excel;

import com.alibaba.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

public class DemoEasyExcel {

    public static void main(String[] args) {
    
//写法1 //实现excel写的操作(生成一个excel文件,并且有内容) //1.设置写入文件地址和excel文件名称,如果路径是C盘可能会报错。 String fileName = "F:\\write.xlsx"; //2.调用easyexcel里面的方法实现写操作 //write有两个参数,第一个参数是文件路径名称,第二个参数是实体类class,doWrite里需要传递一个集合 EasyExcel.write(fileName,DemoDataExcel.class).sheet("学生列表").doWrite(getData()); } private static List<DemoDataExcel> getData(){ List<DemoDataExcel> list = new ArrayList<>(); for(int i = 0;i<10;i++){ DemoDataExcel data = new DemoDataExcel(); data.setSno(i); data.setSname("Excel"+i); list.add(data); } return list; } }

方法2

public static void main(String[] args) throws Exception {
    // 写法2,方法二需要手动关闭流
    String fileName = "F:\\112.xlsx";
    // 这里 需要指定写用哪个class去写
    ExcelWriter excelWriter = EasyExcel.write(fileName, DemoDataExcel.class).build();
    WriteSheet writeSheet = EasyExcel.writerSheet("写入方法二").build();
    excelWriter.write(data(), writeSheet);
    /// 千万别忘记finish关闭流
    excelWriter.finish();
}

4.执行main方法,excel效果如下。

二、读操作基本示例(从excel文件把数据读出来)

1.创建实体类(注解多了一个value和index)

package com.stu.codeGenerator.excel;

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

@Data
public class DemoDataExcel {

    //设置Excel表头名称

    //0表示第一列
    @ExcelProperty(value = "学生编号",index = 0)
    private Integer sno;

    //1表示第二列
    @ExcelProperty(value = "学生姓名",index = 1)
    private String sname;

}

2.创建一个监听器类继承AnalysisEventListener,进行excel文件读取,他是一行一行的读取

package com.stu.codeGenerator.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.sql.SQLOutput;
import java.util.Map;

public class ExcelListener extends AnalysisEventListener<DemoDataExcel> {

    //一行一行读取excel内容,第一行表头不会读取
    @Override
    public void invoke(DemoDataExcel demoDataExcel, AnalysisContext analysisContext) {

        System.out.println("++++行内容++++="+demoDataExcel);
    }

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

    //读取完成之后
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("++++++++="+analysisContext);

    }

}

3.测试方法(两个方法)

方法1

package com.stu.codeGenerator.excel;

import com.alibaba.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

public class DemoEasyExcel {

    public static void main(String[] args) {
//        //实现excel写的操作(生成一个excel文件,并且有内容)
//        //1.设置写入文件地址和excel文件名称
//        String fileName = "F:\\write.xlsx";
//
//        //2.调用easyexcel里面的方法实现写操作
//        //write有两个参数,第一个参数是文件路径名称,第二个参数是实体类class
//        EasyExcel.write
使用EasyExcel导出Excel非常简单,只需要几个步骤即可: 1. 引入EasyExcel依赖 在`pom.xml`文件中加入EasyExcel的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` 2. 编导出Excel的实体类 例如,我们要导出一个学生的信息表格,可以先定义一个`Student`实体类: ```java @Data public class Student { @ExcelProperty("姓名") private String name; @ExcelProperty("班级") private String clazz; @ExcelProperty("分数") private Integer score; } ``` `@ExcelProperty`注解用于指定导出Excel时的列名。 3. 编导出Excel的方法 在Controller中编导出Excel的方法: ```java @GetMapping("/export") public void export(HttpServletResponse response) throws IOException { // 查询出所有学生信息 List<Student> students = studentService.list(); // 设置响应头 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("学生信息表.xlsx", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); // 使用EasyExcel进行导出 EasyExcel.write(response.getOutputStream(), Student.class).sheet("学生信息").doWrite(students); } ``` 其中,`EasyExcel.write()`方法用于指定导出的Excel文件的输出流和实体类类型,`sheet()`方法用于指定Excel文件的sheet名称,`doWrite()`方法用于执行导出操作。 4. 测试 启动应用程序,访问`/export`接口,即可下载导出的Excel文件。 以上就是使用EasyExcel导出Excel的简单示例。需要注意的是,EasyExcel还支持导入Excel和大数据导入导出等功能,具体使用方法可参考官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值