Springboot+Easyexcel将数据写入模板文件并导出Excel

Springboot+Easyexcel将数据写入模板文件并导出Excel

  • 一、导入依赖
  • 二、根据excel表头创建对应的实体类Pojo
  • 三、Controller类接收请求
  • 四、Service层获取待写入数据
  • 五、效果展示
  • 六、总结

一、导入依赖

<!--操作excel工具包-->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version>
</dependency>

话费电费燃气费94折充值,加v: sz08111,长期有效

二、根据excel表头创建对应的实体类Pojo

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;@Data
public class ExcelTitle {@ExcelProperty(value="事件名称", index=0)private String eventName;@ExcelProperty(value="需求负责人", index=1)private String prdManager;@ExcelProperty(value="技术负责人", index=2)private String techManager;@ExcelProperty(value="文档链接", index=3)private String prdDocs;@ExcelProperty(value="数据链接", index=4)private String statsDocs;@ExcelProperty(value="统计口径", index=5)private String reportCaliber;

这里采用了@ExcelProperty的注解,其中value表示列名,index表示列名的索引值。

三、Controller类接收请求

@RequestMapping(value = "/bulkOutput", method = RequestMethod.GET)public ResultBean bulkOutput(HttpServletResponse response) {// 重要! 设置返回格式是excel形式response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");// 设置编码格式response.setCharacterEncoding("utf-8");// 设置URLEncoder.encode 防止中文乱码String fileName = null;try {fileName = URLEncoder.encode("数据批量导出", "UTF-8").replaceAll("\\+", "%20");// 设置响应头response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");List<ExcelTitle> bulkOutputData = wildEventService.getBulkOutputData();// 模板文件保存在springboot项目的resources/static下Resource resource = new ClassPathResource("static/数据批量导出模板.xlsx");ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(resource.getInputStream())	// 利用模板的输出流.build();// 写入模板文件的第一个sheet 索引0    WriteSheet writeSheet = EasyExcel.writerSheet(0).build();// 将数据写入到模板文件的对应sheet中excelWriter.write(bulkOutputData, writeSheet);excelWriter.finish();} catch (UnsupportedEncodingException e) {return ResultBean.errorService(e.getMessage());} catch (IOException e) {return ResultBean.errorService(e.getMessage());}return ResultBean.success("数据导出成功!");}

上述代码中,首先对response进行了设置,设置了返回类型,响应头,以及导出下载时的文件名称。接下来,利用Resource resource = new ClassPathResource(“static/数据批量导出模板.xlsx”); 读取项目下的模板文件,并调用easyexcel的写入方法。这里write(response.getOutputStream())表示写入response的输出流,即将文件返回给客户端进行下载。withTemplate(resource.getInputStream())表示读取模板文件进行写入。最后调用 WriteSheet writeSheet = EasyExcel.writerSheet(0).build();将苏剧写入模板文件的第一个sheet中(索引从0开始)。

四、Service层获取待写入数据

import com.example.demo.Pojo.ExcelTitle;
import org.springframework.stereotype.Service;import java.util.ArrayList;
import java.util.List;@Service
public class BulkOutputService {public List<ExcelTitle> getOutputData(){List<ExcelTitle> resultList = new ArrayList<>();// 第一行数据ExcelTitle t1 = new ExcelTitle();t1.setEventName("测试数据1");t1.setTechManager("张三");t1.setPrdManager("张三");t1.setPrdDocs("http://prdDocs.com");t1.setStatsDocs("http://statsDocs.com");t1.setReportCaliber("reportCaliber");// 第二行数据ExcelTitle t2 = new ExcelTitle();t2.setEventName("测试数据2");t2.setTechManager("李四");t2.setPrdManager("李四");t2.setPrdDocs("http://prdDocs.com");t2.setStatsDocs("http://statsDocs.com");t2.setReportCaliber("reportCaliber");resultList.add(t1);resultList.add(t2);return resultList;}}

五、效果展示

启动springboot程序,在浏览器中输入请求: http://localhost:8080/bulkOutput,可以发现返回的excel文件被浏览器下载,打开后内容如下:
在这里插入图片描述
可以看到,数据根据模板格式写入了文件,并以excel的形式导出。初步完成了我们预定的场景。

六、总结

本次实现的功能是利用现有模板,将数据批量导出成excel,借助于easyexcel来实现操作excel的功能。最重要的功能模块是Controller里的内容。

需要注意

  • 需要加上response的响应类型和响应头来使得返回请求返回excel文件

  • 写到Web流时,这里的ContentType和CharacterEncoding不要乱码,否则很容易乱码或者文件损坏

  • 使用EasyExcel.withTemplate引入模板的输入流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78332.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 事务详解(注解方式)

目 录 序言 1、编程式事务 2、配置声明式事务 2.1 基于TransactionProxyFactoryBean的方式&#xff08;不常用&#xff0c;因为要为每一个类配置TransactionProxyFactoryBean&#xff09; 2.2 基于AspectJ的XML方式&#xff08;常用&#xff0c;可配置在某些类下的所有子…

Kubernetes 整体架构介绍

架构图 Kubernetes 主要由以下几个核心组件组成&#xff1a; etcd 保存了整个集群的状态&#xff1b;kube-apiserver 提供了资源操作的唯一入口&#xff0c;并提供认证、授权、访问控制、API 注册和发现等机制&#xff1b;kube-controller-manager 负责维护集群的状态&#xf…

在线推算给定日期指定天数前(后)的日期

在线推算给定日期指定天数前(后)的日期

点击编辑变完成

<template><div><button click"dialogshowtrue">添加部门</button><div>部门列表</div><el-table ref"multipleTable" :data"form" tooltip-effect"dark" style"width: 100%">&l…

【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

单例模式(C++)

定义 保证一个类仅有一个实例&#xff0c;并提供一个该实例的全局访问点。 应用场景 在软件系统中&#xff0c;经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例&#xff0c;才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器&#xff0c;提供一种…

怎么学习CSS相关技术知识? - 易智编译EaseEditing

学习CSS技术是前端开发中的重要一环&#xff0c;它用于控制网页的样式和布局&#xff0c;使网页更加美观和易于使用。以下是学习CSS技术的几个方面&#xff1a; 基本语法和选择器&#xff1a; 了解CSS的基本语法&#xff0c;学习如何使用选择器来选择HTML元素并应用样式。 样…

Linux 下设置开机自启动的方法

文章目录 事先准备对于普通的 Linux对于 RedHat Enterprise Linux 9 笔者的运行环境&#xff1a; 设置成功过的 Linux&#xff1a; RedHat Enterprise Linux 9 x86_64 CentOS 8 x86_64 事先准备 进行这个教程之前&#xff0c;必须要先安装好一个 Linux 操作系统。这个 Linux…

【C语言进阶】指针的高级应用(中)

本专栏介绍&#xff1a;免费专栏&#xff0c;并且会持续更新C语言知识&#xff0c;欢迎各位订阅关注。 关注我&#xff0c;带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章&#xff0c;坚持更新&#xff01; 大家的支持才是更新的最强动力&#xff01; 文章目录 一、…

Elasticsearch 全文检索 分词检索-Elasticsearch文章四

文章目录 官方文档地址refercence文档全文搜索体系match简单查询match 多词/分词单字段分词match多个词的逻辑控制match的匹配精度match_pharse_prefix分词前缀方式match_bool_prefixmulti_match多字段匹配 query string类型Interval类型DSL查询之Term详解聚合查询之Bucket聚合…

dialog => :before-close的属性应用

在element-ui里面关闭弹窗的时候before-close会触发。 也就是点击X的时候回触发before-close这个属性, 代码实例: <el-dialogtitle"新增用户":visible.sync"dialogVisible"width"50%":before-close"handleClose"> handleClose…

百分点科技跻身中国智慧应急人工智能解决方案市场前三

近日&#xff0c; 全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额&#xff0c;2022》报告&#xff0c;数据显示&#xff0c;2022年中国智慧应急整体市场为104亿元人民币。其中&#xff0c;智慧应急人工智能解决方案子市场备受关注&#xff0c;百分点科…

小成本大幅度增幅CNN鲁棒性,完美的结合GLCM+CNN

本文以实验为导向&#xff0c;使用vgg16GLCM实现一场精彩的新冠肺炎的分类识别&#xff0c;并且对比不加GLCM后的效果。在这之前&#xff0c;我们需要弄明白一些前缀知识和概念问题&#xff1a; GLCM&#xff08;Gray-Level Co-occurrence Matrix&#xff09;&#xff0c;中文称…

使用ChatGPT编写技术文档

技术文档对于任何项目都是至关重要的&#xff0c;因为它确保所有利益相关者都在同一层面上&#xff0c;并允许有效的沟通和协作。创建详细而准确的技术文档可能既耗时又具有挑战性&#xff0c;特别是对于那些不熟悉主题或缺乏强大写作技巧的人来说。ChatGPT 是一个强大的人工智…

解密爬虫ip是如何被识别屏蔽的

在当今信息化的时代&#xff0c;网络爬虫已经成为许多企业、学术机构和个人不可或缺的工具。然而&#xff0c;随着网站安全防护的升级&#xff0c;爬虫ip往往容易被识别并屏蔽&#xff0c;给爬虫工作增加了许多困扰。在这里&#xff0c;作为一家专业的爬虫ip供应商&#xff0c;…

torchvision.datasets数据加载失败

torchvision.datasets数据加载失败 如何使用torchvision.datasets进行自动下载数据失败&#xff0c;可以使用手动下载数据 Ctrl点击可以进入相关包文件&#xff0c;查找下载地址&#xff1a;https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 手动下载之后解压&#x…

使用Vscode编辑keil工程

一、需要安装的插件 1. Keil Assistant 2. C/C 3. 中文配置&#xff1a; 二、插件配置 1. Keil Assistant 添加Keil的安装路径 接下来就可以使用vscode编辑Keil的工程了&#xff0c;调试编译和下载程序需要返回到Keil中进行操作。 三、Vscode常用快捷键 可以自定义进行配置…

微信小程序开通账号

https://mp.weixin.qq.com/ 在该页面使用一个新邮箱注册一个账号&#xff0c;并且绑定一个微信号作为管理者用户&#xff0c;下次登录&#xff0c;在该页面&#xff0c;直接使用微信扫码后&#xff0c;选择账号登录

Spring Cloud Alibaba (一)

1 微服务介绍 1.1 系统架构演变 随着互联网的发展&#xff0c;网站应用的规模也在不断的扩大&#xff0c;进而导致系统架构也在不断的进行变化。 从互联网早起到现在&#xff0c;系统架构大体经历了下面几个过程: 单体应用架构--->垂直应用架构--->分布 式架构--->S…