Java使用EasyExcel实现常规的Excel导入导出(详细)

2年前 (2022) 程序员胖胖胖虎阿
257 0 0

记录一次用EasyExcel实现Excel导入导出

以前工作中实现Excel操作都是用的公司封装好的功能或者用JXL和POI, 最近在掘金的时候无意中发现了EasyExcel, 看了源码之后是真香啊, 简直不要太简单! 下面就先简单的实现一个导入导出, 后面的其他功能再慢慢研究, 废话不多说, 上代码:

目录

导出:

导入:


先要添加maven依赖:

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

然后可以直接在实体类中配置表头, @ExcelProperty()就是用来设置表头的, 也可以这样写:@ExcelProperty(value="名称",index=索引), 此外@ExcelProperty()还有很多配置各种类型的表头, 详情可以参考EasyExcel官方文档

@TableName(value = "user")
@Data
public class User implements Serializable {
    //@ExcelProperty:配置表头
    @ExcelProperty("主键")
    private String id;
    @ExcelProperty("姓名")
    private String yhxm;
    @ExcelProperty("性别")
    private String yhxb;
    @ExcelProperty("登陆账号")
    private String yhzh;
    @ExcelProperty("登陆密码")
    private String yhmm;
    @ExcelProperty("出生年月")
    private Date csrq;
}

写一个TestFileUtil工具类:

public class TestFileUtil {
    //因为这个简单的导入导出没有用到什么别的功能,我这里就只写了一个路径
    public static String getPath() {
        return "D:/wsfile/";
    }
}

导出:

@PostMapping("ExportExcel")
    public void ExportExcel() {
        String fileName = TestFileUtil.getPath() + "User" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为用户表 然后文件流会自动关闭
        EasyExcel.write(fileName, User.class).sheet("用户表").doWrite(data());
    }

    public List<User> data() {
        //查询用户表,具体service层实现就不写了
        List<User> list1 = loginService.findUser();
        return list1;
    }

当然也可以直接这样写, 就不用另外再写一个方法了:

@PostMapping("ExportExcel")
    public void ExportExcel() {
        String fileName = TestFileUtil.getPath() + "User" + System.currentTimeMillis() + ".xlsx";
        EasyExcel.write(fileName, User.class).sheet("用户表").doWrite(loginService.findUser());
    }

下面用postman来测试一下:

Java使用EasyExcel实现常规的Excel导入导出(详细)

 成功了,在我配置的路径D:/wsfile/里看到了刚刚导出的用户表文件

Java使用EasyExcel实现常规的Excel导入导出(详细)

 打开看一下, 信息没问题! Java使用EasyExcel实现常规的Excel导入导出(详细)

 再来看一下导入

导入:

因为我懒得写前端上传文件, 用的是postman调接口, 这里就直接设置好了要导入文件的路径

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

Java使用EasyExcel实现常规的Excel导入导出(详细)

Java使用EasyExcel实现常规的Excel导入导出(详细)

下面我们来测试一下:

Java使用EasyExcel实现常规的Excel导入导出(详细)

 成功后查询数据库, 可以看到刚刚要导入的内容成功了

Java使用EasyExcel实现常规的Excel导入导出(详细)

 至此一个简单的EasyExcel操作Excel就完成啦

版权声明:程序员胖胖胖虎阿 发表于 2022年11月25日 上午7:24。
转载请注明:Java使用EasyExcel实现常规的Excel导入导出(详细) | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...