Java使用easyExcel操作Excel就是这么简单!
文章目录
- 前言
- 第一步:导入依赖
- 第二步:创建一个EasyExcelReadListener类,继承easyExcel中的AnalysisEventListener类,实现里面的invoke()和doAfterAllAnalysed()方法
- 第三步:在controller中分别实现Excel的模板下载,Excel文件上传,以及Excel读取数据库数据并下载。
- 第四步:启动项目
前言
之前我们都是使用jxl或者poi操作Excel表格,我们本次使用阿里开源的easyExcel对Excel实现上传和下载功能。在本次的演示项目中引入了mybatis-plus依赖,将Excel表格中的数据读取并且写入数据库中。
第一步:导入依赖
<!-- 阿里开源easyExcel依赖-->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.4</version>
</dependency>
第二步:创建一个EasyExcelReadListener类,继承easyExcel中的AnalysisEventListener类,实现里面的invoke()和doAfterAllAnalysed()方法
/*** @author YLY* @version 1.0* @className EasyExcelReadListener* @date 2020/7/19 11:47*/
@Slf4j
public class EasyExcelReadListener extends AnalysisEventListener<EasyExcelModel> {@Autowiredprivate EasyExcelMapper easyExcelMapper;private List<EasyExcelModel> easyExcelModels = new ArrayList<>();public EasyExcelReadListener(EasyExcelMapper easyExcelMapper) {this.easyExcelMapper = easyExcelMapper;}@Overridepublic void invoke(EasyExcelModel easyExcel, AnalysisContext analysisContext) {log.info("开始读取文章:{}", easyExcel.toString());easyExcelModels.add(easyExcel);}@Transactional(rollbackFor = Exception.class)@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {log.info("进入到:doAfterAllAnalysed 方法中");easyExcelModels.forEach(easyExcelModel -> {easyExcelMapper.insert(easyExcelModel);});}
}
其中invoke()方法负责读取Excel中的数据,doAfterAllAnalysed()方法是在读取完成之后执行的方法。
第三步:在controller中分别实现Excel的模板下载,Excel文件上传,以及Excel读取数据库数据并下载。
/*** @author YLY* @version 1.0* @className EasyExcelController* @date 2020/7/19 11:46*/
@Controller
public class EasyExcelController {@Autowiredprivate IEasyExcelService iEasyExcelService;@Autowiredprivate EasyExcelMapper easyExcelMapper;@GetMapping("/tempalte")public void tempalte(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(),EasyExcelModel.class ).sheet("数据上传模板").doWrite(new ArrayList<EasyExcelModel>());}@PostMapping("/upload")@ResponseBodypublic String upload(MultipartFile file) throws IOException {EasyExcel.read(file.getInputStream(),EasyExcelModel.class , new EasyExcelReadListener(easyExcelMapper)).sheet().doRead();return "success";}@GetMapping("/download")public void download(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(), EasyExcelModel.class).sheet("数据表格").doWrite(iEasyExcelService.list());}}
其中EasyExcelModel类为对应数据库的表名,里面存在四个属性值,分别对应数据库的字段名称。 值得注意的是,我是用了lombok,如果不会使用lombok的话,可以将@Data、@NoArgsConstructor 、@AllArgsConstructor、@EqualsAndHashCode 注解删除,然后实现getter/setter方法
/*** @author YLY* @version 1.0* @className EasyExcel* @date 2020/7/19 11:33*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@TableName("easy_excel")
public class EasyExcelModel {@TableId(value = "id", type = IdType.AUTO)@ExcelIgnore // 下载的Excel的表头中忽略此字段private Long id;@ExcelProperty("姓名") //映射Excel的标题名称@TableField("name") //mybatis-plus 对应的数据库字段名称private String name;@ExcelProperty("年龄")@TableField("age")private Integer age;@ExcelProperty("地址")@TableField("address")private String address;}
第四步:启动项目
1.访问:http://localhost:8080/tempalte 下载文档模板并打开
2.在Excel中填写数据
3、访问 http://localhost:8080/upload 将填好的Excel上传,可以看到后台日志,并且数据库中也写入了表中数据。
4、访问 http://localhost/download 下载Excel数据库中的数据。
示例代码地址:
码云:https://gitee.com/yangluyao97/easyexcel-demo
github:https://github.com/815090488/-easyexcel-demo
Java使用easyExcel操作Excel就是这么简单!相关推荐
- java利用EasyExcel操作Excel
EasyExcel EasyExcel读写Excel的基本使用 Excel导入导出的应用场景 数据导入:减轻录入工作量 数据导出:统计信息归档 数据传输:异构系统之间数据传输 EasyExcel简介 ...
- Java使用EasyExcel操作Excel表格
1 EasyExcel简介 EasyExcel是阿里巴巴开源的一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址:https ...
- Java 使用 POI 操作 Excel
Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...
- POI和EasyExcel操作Excel
POI和EasyExcel操作Excel 常用场景 1.将用户信息导出为excel表格(导出数据- ) 2.将Excel表中的信息录入到网站数据库(文件数据上传- ) 开发中经常会设计到excel的处 ...
- Java 使用 POI 操作 Excel(反射,大数据量)
Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...
- Java使用poi操作excel注意事项
Java使用poi操作excel注意事项 1.如果只需要获取sheet信息,用流模式打开文件即可获取,消耗内存少 2.上传的文件需要校验,防止Excel包含异常的缓存文件,缓存文件可能会有几百兆,会瞬 ...
- execle java,Java使用POI操作Excel
Java使用POI操作Excel 1. POI操作Excel 1.1. 依赖 org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0 org.a ...
- java使用poi操作excel删除一整行
java使用poi操作excel删除一整行 需求1:删除excel表格第4行 代码示例: sheet.shiftRows(4, sheet.getLastRowNum(),-1); 第一个参数为行数( ...
- Java 使用EasyExcel导出excel文件
Java 使用EasyExcel导出excel文件 一.引入pom依赖 二.导出实体 三. 生成excelController 四.效果 一.引入pom依赖 <dependency>< ...
最新文章
- HDU-1025 Constructing Roads In JGShining's Kingdom
- python手机版安卓-当python遇到Android手机 那么,万物皆可盘
- 5G与数据中心是新基建“耗电双雄”?事情不能这么看……
- 为什么在使用get时,Properties对象总是忽略默认值?
- C#开发微信门户及应用(18)-微信企业号的通讯录管理开发之成员管理
- 如何手动连上mysql_如何手动安装MySql
- 客户旅程_我如何充分利用freeCodeCamp的旅程
- Http 理论基础-请求与响应、响应状态码汇总
- 可编译运行的安卓USB/OTG摄像头程序
- python办公自动化——提取pdf中的文字和表格
- 接口测试, 功能测试(黑盒测试)
- 中国撸串指北:13万家烧烤店的吃货最爱
- C++矩阵之岛屿的最大面积
- HTTP与HTTPS及计算机热门快捷键
- filebeat重复采集数据问题排查
- 浅谈provide与inject
- HDFS——JN扩容的正确姿势
- mongodb 百万_MongoDB查询性能超过500万条记录
- 迅雷工作原理的推测及慎用它的理由
- 计算机网络的应用特点是什么,现代计算机通信技术特点及通信网络的应用
热门文章
- 支付系统中的设计模式01:初始需求
- 计算机网络按覆盖范围分类可分为哪三类,单选(10分) 计算机网络按覆盖范围一般可分为三类,它们是( )...
- 在制定调薪计划和沟通调薪结果时,我们到底该做什么
- chatGPT的体验,是不是真智能?
- 介绍内存一致性(Memory Consistency)和缓存一致性(Cache Coherence)
- OWASP top 10漏洞详解
- linux结束进程和端口占用
- scratch小课堂——接球
- python应用程序无法正常启动0xc0000142_Win7系统应用程序无法启动提示0xc0000142的解决方法...
- 使用 .NET 标记游戏地图关键坐标点