Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)
Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)
导入pom依赖
编写导出模板
@ApiOperation("导出xxx模板") @GetMapping("/downTemplates") public void download(HttpServletResponse response) throws FileNotFoundException, IOException {response.reset();response.setCharacterEncoding("UTF-8");response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");File temFile=new File("src/main/resources/templates/xxx导入模版.xlsx");String fileName = URLEncoder.encode("xxx导入模版", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8' '" + fileName +".xlsx");FileCopyUtils.copy(new FileInputStream(temFile), response.getOutputStream());response.getOutputStream().close();}
导入数据处理
编写监听器
@Component public class xxxListener extends AnalysisEventListener<Entity> {private static final Logger LOGGER = LoggerFactory.getLogger(xxxListener.class);//读取数据初始化值private static final int BATCH_COUNT = 50;List<Entity> list = new ArrayList<Entity>();@Resourceprivate xxxxService xxxxService;public xxxxListener() {xxxxService=new xxxxServiceImpl();}public xxxxListener(xxxxService xxxxService) {this.xxxxService=xxxxService;}@Overridepublic void invoke(xxxx data, AnalysisContext analysisContext) {list.add(data);// 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOMif (list.size() >= BATCH_COUNT) {saveData();// 存储完成清理 listlist.clear();}}/*** 所有excel表中数据解析完成了 都会来调用这个* 解释为什么要保存数据?*初始化读取数量为50,表中信息已经加载完毕,,假设excel表中最后只剩下30行遗留数据,所以为了防止存在遗留数据 尽量判断下集合是否为空,不为空在进行存储(这是我的逻辑需要判断,如果不需要也可进行不判断)* @param analysisContext*/@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {if(list.size()==0){return;}saveData();LOGGER.info("所有数据解析完成!");}private void saveData() {//代码实现类层保存数据xxxxService.saveBatch(list);LOGGER.info("存储数据库成功!");}
编写数据转换器
public class XXXConverter implements Converter<Integer> {//在java中保护单位是用数字来标识的所以是int@Overridepublic Class supportJavaTypeKey() {return Integer.class;}// 在excel中是string@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}//将excel的数据类型转为java数据类型@Overridepublic Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {String stringValue = cellData.getStringValue();if (stringValue == null) {throw new RuntimeException("数据为空");}if ("(自己的数据)".equals(stringValue)) {return 1;}return 0;}//将java的数据类型转为excel数据类型@Overridepublic WriteCellData<?> convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {return new WriteCellData<>();} }
Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)相关推荐
- Spring Boot整合EasyExcel(完整版包含上传解析excel和下载模板)
Spring Boot整合EasyExcel(完整版包含上传解析excel和下载模板) 1. 加入依赖 2. 对读取excel内容(批量添加) 3. 模板下载: 1. 加入依赖 <depende ...
- Java 利用EasyPoi做Excel模板的导入导出操作
Java 利用EasyPoi做Excel模板的导入导出操作 项目背景 加入pom依赖 项目Excel模板图 代码实现 首先是实体类定义 Excel 实现导入 Excel的导出 结束语 项目背景 作为一 ...
- vue实现下载EXCEL模板、导入EXCEL文件
vue实现下载EXCEL模板.导入EXCEL文件 在项目中很常见需要先下载模板,根据模板导入 下面展示一些 下载模板代码片段. 需要有一个下载模板的接口,点击下载触发函数,调用接口,返回下载地址 接口 ...
- SAP ABAP EXCEL 下载模板并导入(数据批导)
SAP ABAP EXCEL 下载模板并导入(数据批导) 文章目录 SAP ABAP EXCEL 下载模板并导入(数据批导) 前言 上传 EXCEL 模板 下载 EXCEL 模板 定义屏幕 初始化设置 ...
- java hutool poi 基于excel模板文件,填充数据的思路
需求 用户可下载excel模板文件,填充数据后上传,也可以下载已上传所有数据的excel,模板文件和含数据excel,都有列头及列说明:由此想到模板文件和含数据excel共用一份excel模板,下载数 ...
- Spring Boot整合Thymeleaf模板引擎
转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...
- C# EPPlus根据Excel模板读取与保存数据
文章目录 一.读取Excel中的数据到DataTable 二.将数据保存到Excel EPPlus官方文档: https://www.epplussoftware.com/zh/Developers ...
- SpringBoot导出word模板并动态渲染数据
导出word模板并动态渲染数据 一.需求介绍 背景:需要导出word模板的时候,有些数据是动态或者图片等不确定因素的时候.根据需求定制好的模板要求填充数据,那么这个时候就需要进行根据word模板进行动 ...
- Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)
Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器) 主要思路 上传图片的思路有两种: 第一种是上传到应用服务器,再由应用服务器上传到OSS.这种适合上传的文件较小,较为简单, ...
- excel根据条件列转行_如何将excel里的一列数据转为一行 excel数据列转行的办法步骤...
如何将excel里的一列数据转为一行 excel数据列转行的办法步骤 我们的生活中越来越离不开PC,但在使用PC的过程中总会遇到各种各样的问题.知识屋致力于给PC小白朋友们介绍一些简单常用问题的解决办 ...
最新文章
- 定位到某个单词_【侃侃单词】词根词缀记单词-loc
- Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结
- C++ class实现双向循环链表(完整代码)
- python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构
- Matplotlib作业2
- HTML、CSS、JS对unicode字符的不同处理
- java基本运算方法总结(ing)
- 机器人开发--技术路线简介
- 服务器系统备份还原到虚拟机,一秒还原,一秒备份,系统重装「新手学识4」虚拟机--时光倒流...
- torchdiffeq中odeint函数的输入输出参数分析
- 010 《你不理财,财不理你》读书笔记
- 17. 如何通过 SAP ABAP OData $expand 操作在同一个 HTTP 请求中返回多个节点的数据
- 米斯特白帽培训讲义(v2)漏洞篇 弱口令、爆破、遍历
- 量子计算机原理 不确定,逃避量子物理学中的不确定性原理
- 知识竞赛答题小程序的管理后台搭建教程
- Matlab矩阵操作相关题目
- 第三方资源下载路径集合
- 关于C++ non-aggregate cannot be initialized错误的解决
- 为什么说在数字角频率中:π附近的频率分量就是高频分量?
- 《Lucid Data Dreaming for Video Object Segmentation》论文笔记