记录一次用EasyExcel实现Excel导入导出
以前工作中实现Excel操作都是用的公司封装好的功能或者用JXL和POI, 最近在掘金的时候无意中发现了EasyExcel, 看了源码之后是真香啊, 简直不要太简单! 下面就先简单的实现一个导入导出, 后面的其他功能再慢慢研究, 废话不多说, 上代码:
目录
导出:
导入:
先要添加maven依赖:
然后可以直接在实体类中配置表头, @ExcelProperty()就是用来设置表头的, 也可以这样写:@ExcelProperty(value="名称",index=索引), 此外@ExcelProperty()还有很多配置各种类型的表头, 详情可以参考EasyExcel官方文档
@TableName(value = "user")@Datapublic 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
当然也可以直接这样写, 就不用另外再写一个方法了:
@PostMapping("ExportExcel") public void ExportExcel() { String fileName = TestFileUtil.getPath() + "User" + System.currentTimeMillis() + ".xlsx"; EasyExcel.write(fileName, User.class).sheet("用户表").doWrite(loginService.findUser()); }
下面用postman来测试一下:
成功了,在我配置的路径D:/wsfile/里看到了刚刚导出的用户表文件
打开看一下, 信息没问题!
再来看一下导入
导入:
因为我懒得写前端上传文件, 用的是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
下面我们来测试一下:
成功后查询数据库, 可以看到刚刚要导入的内容成功了
至此一个简单的EasyExcel操作Excel就完成啦