使用EasyExcel实现文件导入导出(源码复制即可)

 EasyExcel官网:读Excel | Easy Excel (alibaba.com)

目录结构:

1.Maven依赖

这里注意我使用的是3.1.x的版本,大版本语法会不一样。

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



        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>


2.编写实体类

这里需要认识几个注解,设置导入导出时比对你的字符串。

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Jin {

    //实体类 对应你导出的字段

    @ExcelIgnore
    private int id;

    @ColumnWidth(20)
    @ExcelProperty("员工姓名")
    private String name;


    @ColumnWidth(20)
    @ExcelProperty("上班时间")
    private String starttime;

    @ColumnWidth(20)
    @ExcelProperty("下班时间")
    private String endtime;



}

3.设置文件下载地址

配置类


public class TestFileUtil {


    //文件上传下载地址设置为D盘  你自己可以设置  方法有很多
        public static String getPath() {
            return "D:/";
        }



}

4.编写导出接口

这里下载地址在D盘,发送请求之后直击去D盘查看就行。


String fileName = TestFileUtil.getPath() + "Jin" + System.currentTimeMillis() + ".xlsx";

文件下载名字。


EasyExcel.write(fileName, Jin.class).sheet("用户表").doWrite(jinServer.list());

这里需要自己改jinServer.list()这个就是查询出来的所以数据,需要自己根据业务写。

//导出   导出  直接发送请求 就会下载到你的D盘
    @PostMapping("ExportExcel")
    public void ExportExcel() {
        String fileName = TestFileUtil.getPath() + "Jin" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为用户表 然后文件流会自动关闭
        EasyExcel.write(fileName, Jin.class).sheet("用户表").doWrite(jinServer.list());
    }

 


 5.编写文件上传

这个官网也有demo,下面foreach需要你自己写插入数据 这里我用的MP快速插入。


没有写前端,直接写死的文件地址,所以直接发送请求数据就到数据库了。

  //导入  这个地方我没有写前端 直接写死的文件地址 也是一样的
    @PostMapping("ImportExcel")
    public void ImportExcel() {
        //设置指定导入文件的绝对路径,我这里是要导入user.xlsx
        String fileName = TestFileUtil.getPath()  + File.separator + "Jin1669343889185.xlsx";
        // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
        // 这里每次会读取3000条数据 然后返回过来 直接调用使用数据就行
        EasyExcel.read(fileName, Jin.class, new PageReadListener<Jin>(dataList -> {
            for (Jin user : dataList) {
                //将导入的数据用mybatisPlus一个个添加进数据库
                jinMapper.insert(user);
            }
        })).sheet().doRead();
    }

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于使用Spring Boot和EasyExcel实现Excel的导入导出,你可以按照以下步骤进行操作: 1. 添加依赖:在你的Spring Boot项目的pom.xml文件中添加EasyExcel的依赖。 ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.11</version> </dependency> ``` 2. 创建实体类:创建一个实体类,用于映射Excel中的数据。 ```java public class User { private String name; private Integer age; // 省略 getter 和 setter 方法 } ``` 3. 导出Excel:使用EasyExcel提供的工具类进行导出操作。 ```java public void exportExcel(List<User> userList, HttpServletResponse response) throws IOException { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("用户列表", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), User.class).sheet("用户列表").doWrite(userList); } ``` 4. 导入Excel:使用EasyExcel提供的监听器类进行导入操作。 ```java public void importExcel(MultipartFile file) throws IOException { EasyExcel.read(file.getInputStream(), User.class, new AnalysisEventListener<User>() { @Override public void invoke(User user, AnalysisContext context) { // 处理每一行数据 } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 所有数据处理完成后的操作 } }).sheet().doRead(); } ``` 以上就是使用Spring Boot和EasyExcel实现Excel导入导出的基本步骤。你可以根据自己的需求对代码进行适当的调整和扩展。希望对你有所帮助!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值