网站首页 > java教程 正文
记录一次用EasyExcel实现Excel导入导出
以前工作中实现Excel操作都是用的公司封装好的功能或者用JXL和POI,最近发现了一款excel操作神器EasyExcel,看了源码之后是真香啊,用起来简直不要太爽! 下面就先简单的实现一个导入导出,后面的其他功能再慢慢研究,废话不多说,上代码:
先要添加maven依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
然后可以直接在实体类中配置表头,@ExcelProperty()就是用来设置表头的,也可以这样写:@ExcelProperty(value="名称",index=索引),如果不需要某个字段,可以使用@ExcelIgnore注解忽略;此外@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;
}
导出:
@PostMapping("ExportExcel")
public void ExportExcel() {
// 设置文件导出的路径
String realPath = "D://wsfile/";
File folder = new File(realPath);
if (!folder.isDirectory()){
folder.mkdirs();
}
String fileName = realPath + "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;
}
当然也可以直接这样写,就不用另外再写一个方法了,只要保证返回的是List就行:
@PostMapping("ExportExcel")
public void ExportExcel() {
// 设置文件导出的路径
String realPath = "D://wsfile/";
File folder = new File(realPath);
if (!folder.isDirectory()){
folder.mkdirs();
}
String fileName = realPath + "User" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName, User.class).sheet("用户表").doWrite(loginService.findUser());
}
下面用postman来测试一下:
成功了,在我配置的路径D:/wsfile/里看到了刚刚导出的用户表文件
打开看一下,信息没问题!
再来看一下导入
导入:
直接将文件的输入流导入
@PostMapping("ImportExcel")
public void ImportExcel(MultipartFile multipartFile) throws IOException {
if (multipartFile.isEmpty()) {
return;
}
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
// 这里每次会读取3000条数据 然后返回过来 直接调用使用数据就行
EasyExcel.read(multipartFile.getInputStream(), User.class, new PageReadListener<User>(dataList -> {
for (User user : dataList) {
//将导入的数据用mybatisPlus一个个添加进数据库
loginMapper.insert(user);
}
})).sheet().doRead();
}
下面我们来测试一下:
成功后查询数据库,可以看到刚刚要导入的内容成功了
至此一个简单的EasyExcel操作Excel就完成啦!
原文链接:https://mp.weixin.qq.com/s/I2JIFw_f7JKSoOYjvprnTQ
猜你喜欢
- 2024-10-08 「开源」阿里出品,可避免OOM的java处理Excel工具包
- 2024-10-08 使用Java实现Excel数据采集及后台统计功能
- 2024-10-08 java百万千万级别excel导出问题(导出慢和Out Of Memory内存溢出)
- 2024-10-08 利用阿里EasyExcel实现Excel读写(阿里云表格识别)
- 2024-10-08 java轻松玩转Excel之EasyExcel(java excelutil)
- 2024-10-08 「开源资讯」MyExcel 3.8.1 版本发布,Excel等多项功能的工具包
- 2024-10-08 Java 复制Excel单元格区域(java复制粘贴)
- 2024-10-08 Excel神具EasyExcel,常见API(excel.app)
- 2024-10-08 三层-使用NPOI读取Excel文件的数据 183
- 2024-10-08 每天一个入坑小技巧:通过poi、poi-ooxml框架读取不同格式excel
你 发表评论:
欢迎- 最近发表
-
- pyinstaller打包python程序高级技巧
- 将python打包成exe的方式(python打包成exe的方法)
- Python打包:如何将 Flask 项目打包成exe程序
- py2exe实现python文件打包为.exe可执行程序(上篇)
- 如何将 Python 项目打包成 exe,另带卸载功能!
- Python打包成 exe,太大了该怎么解决?
- 可视化 Python 打包 exe,这个神器绝了!
- 案例详解pyinstaller将python程序打包为可执行文件exe
- Cocos 3.x 菜鸟一起玩:打包window程序
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)