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

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

目录结构:

使用EasyExcel实现文件导入导出(源码复制即可)_第1张图片

1.Maven依赖

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

        
            com.alibaba
            easyexcel
            3.1.1
        



        
            org.projectlombok
            lombok
            RELEASE
            compile
        


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());
    }

 使用EasyExcel实现文件导入导出(源码复制即可)_第2张图片


 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(dataList -> {
            for (Jin user : dataList) {
                //将导入的数据用mybatisPlus一个个添加进数据库
                jinMapper.insert(user);
            }
        })).sheet().doRead();
    }

 

 

你可能感兴趣的:(excel,java,spring,mysql,mybatis)