Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)

  1. 导入pom依赖

  2. 编写导出模板

    @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();}
    
  3. 导入数据处理

    1. 编写监听器

      @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("存储数据库成功!");}
    2. 编写数据转换器

      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实战)相关推荐

  1. Spring Boot整合EasyExcel(完整版包含上传解析excel和下载模板)

    Spring Boot整合EasyExcel(完整版包含上传解析excel和下载模板) 1. 加入依赖 2. 对读取excel内容(批量添加) 3. 模板下载: 1. 加入依赖 <depende ...

  2. Java 利用EasyPoi做Excel模板的导入导出操作

    Java 利用EasyPoi做Excel模板的导入导出操作 项目背景 加入pom依赖 项目Excel模板图 代码实现 首先是实体类定义 Excel 实现导入 Excel的导出 结束语 项目背景 作为一 ...

  3. vue实现下载EXCEL模板、导入EXCEL文件

    vue实现下载EXCEL模板.导入EXCEL文件 在项目中很常见需要先下载模板,根据模板导入 下面展示一些 下载模板代码片段. 需要有一个下载模板的接口,点击下载触发函数,调用接口,返回下载地址 接口 ...

  4. SAP ABAP EXCEL 下载模板并导入(数据批导)

    SAP ABAP EXCEL 下载模板并导入(数据批导) 文章目录 SAP ABAP EXCEL 下载模板并导入(数据批导) 前言 上传 EXCEL 模板 下载 EXCEL 模板 定义屏幕 初始化设置 ...

  5. java hutool poi 基于excel模板文件,填充数据的思路

    需求 用户可下载excel模板文件,填充数据后上传,也可以下载已上传所有数据的excel,模板文件和含数据excel,都有列头及列说明:由此想到模板文件和含数据excel共用一份excel模板,下载数 ...

  6. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  7. C# EPPlus根据Excel模板读取与保存数据

    文章目录 一.读取Excel中的数据到DataTable 二.将数据保存到Excel EPPlus官方文档: https://www.epplussoftware.com/zh/Developers ...

  8. SpringBoot导出word模板并动态渲染数据

    导出word模板并动态渲染数据 一.需求介绍 背景:需要导出word模板的时候,有些数据是动态或者图片等不确定因素的时候.根据需求定制好的模板要求填充数据,那么这个时候就需要进行根据word模板进行动 ...

  9. Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)

    Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器) 主要思路 上传图片的思路有两种: 第一种是上传到应用服务器,再由应用服务器上传到OSS.这种适合上传的文件较小,较为简单, ...

  10. excel根据条件列转行_如何将excel里的一列数据转为一行 excel数据列转行的办法步骤...

    如何将excel里的一列数据转为一行 excel数据列转行的办法步骤 我们的生活中越来越离不开PC,但在使用PC的过程中总会遇到各种各样的问题.知识屋致力于给PC小白朋友们介绍一些简单常用问题的解决办 ...

最新文章

  1. 定位到某个单词_【侃侃单词】词根词缀记单词-loc
  2. Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结
  3. C++ class实现双向循环链表(完整代码)
  4. python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构
  5. Matplotlib作业2
  6. HTML、CSS、JS对unicode字符的不同处理
  7. java基本运算方法总结(ing)
  8. 机器人开发--技术路线简介
  9. 服务器系统备份还原到虚拟机,一秒还原,一秒备份,系统重装「新手学识4」虚拟机--时光倒流...
  10. torchdiffeq中odeint函数的输入输出参数分析
  11. 010 《你不理财,财不理你》读书笔记
  12. 17. 如何通过 SAP ABAP OData $expand 操作在同一个 HTTP 请求中返回多个节点的数据
  13. 米斯特白帽培训讲义(v2)漏洞篇 弱口令、爆破、遍历
  14. 量子计算机原理 不确定,逃避量子物理学中的不确定性原理
  15. 知识竞赛答题小程序的管理后台搭建教程
  16. Matlab矩阵操作相关题目
  17. 第三方资源下载路径集合
  18. 关于C++ non-aggregate cannot be initialized错误的解决
  19. 为什么说在数字角频率中:π附近的频率分量就是高频分量?
  20. 《Lucid Data Dreaming for Video Object Segmentation》论文笔记

热门文章

  1. 几何平均详解,及其与算术平均、调和平均、均方根的关系
  2. (生物信息学)R语言与统计学入门(九)—— 单因素cox回归分析
  3. endnote如何设置文献样式
  4. NPN与PNP的区别与判别
  5. 常用的公共数据集(一)
  6. 《编码:隐匿在计算机软硬件背后的语言》一书勘误
  7. hibernate——继承关系以及三个subclass标签的区别
  8. 【信号与系统】Multisim 仿真抽样定理与信号恢复
  9. 挺有意思的文章。。。
  10. Debian 10 安装fonts-noto-cjk