提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并以及背景色,字体颜色的填充,文本内容的对齐方式等)。

实现思路:

首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口业务代码里通过IO流加载到这个Excel模板文件,读取指定的工作薄(也就是excel左下角的Sheet),接着给模板里的指定表头填充表头数据,接着读取数据库的相关数据用数据传输模型(DTO)封装数据,最后循坏填充excel的数据行(逐行逐列的填充数据),最后把填充完数据的Excel文件流输出(下载),即完成了数据库数据按照指定Excel模板导出Excel的完整过程。废话不多说,下面直接上代码。

一、配置POI框架的依赖

本案例是maven项目,解析Excel采用市面主流的POI框架,在pom.xml文件添加POI框架的依赖

<!--读取excel文件,配置POI框架的依赖-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>

二、放入excel模板文件

目录结构如下所示:

二、导出excel具体实现

@RestController
@RequestMapping("/excel")
public class ExcelExportController {@RequestMapping(value="/excelExport")public ResponseEntity<Resource> excel2007Export(HttpServletResponse response,HttpServletRequest request) {try {ClassPathResource cpr = new ClassPathResource("/templates/"+"student.xlsx");InputStream is = cpr.getInputStream();Workbook workbook = new XSSFWorkbook(is);org.apache.poi.ss.usermodel.Sheet sheet0 =workbook.getSheetAt(0);Row row = sheet0.getRow(2);Cell cell0 = row.getCell(0);Cell cell1 = row.getCell(1);Cell cell2 = row.getCell(2);cell0.setCellValue("guo");cell1.setCellValue("bin");cell2.setCellValue("hui");System.out.println(cell0);//这里作为演示,造几个演示数据,模拟数据库里查数据List <Student> list =  new ArrayList<Student>();Student st1 = new Student();Student st2 = new Student();st1.setName("张三");st1.setScore("87");st1.setClass("一班");st2.setName("张四");st2.setScore("57");st2.setClass("二班");list.add(st1);list.add(st2);for(int i = 0;i<list.size();i++){Row row = sheet0.getRow(i+3);//从第三行开始填充数据row.setCellValue(list.get(i).getName());row.setCellValue(list.get(i).getScore());row.setCellValue(list.get(i).getClass());}String fileName = "moban.xlsx";downLoadExcel(fileName, response, workbook);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return new ResponseEntity<Resource>(HttpStatus.OK);
}public static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {try {response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");response.setHeader("Content-Disposition","attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\"");workbook.write(response.getOutputStream());} catch (IOException e) {e.printStackTrace();}}
}

欢迎各位开发者朋友一起交流。笔者电话(微信):18629374628

springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解相关推荐

  1. python selenium 等待页面加载_python selenium 三种等待方式详解(实战常用)

    引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待了,等待元素可见再继续运行程序: 注:当使用该放发的时 ...

  2. java 动态加载jni_JNI静态注册与动态注册详解

    JNI注册,是指将java层方法(native关键字修饰的)和C层方法对应起来,以实现java层代码调用c层代码的目的.JNI注册分为静态注册和动态注册两种,静态注册是通过固定格式方法名进行关联,动态 ...

  3. 【 数据集加载 DatasetDataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10)】

    数据集加载 Dataset&DataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10) 模块介绍 在本节中没有关于数学原理的相关介绍,使用的数据集和类型 ...

  4. GameFramework篇:StarForce资源加载细节讲解(二:ResourceComponent详解)

    上篇博客已经将编辑器和非编辑器资源加载区分开了,那我们这篇就来具体看看非编辑器模式下资源加载 进入InitResources函数,此时的ResourceManager已经是我们非编辑器模式下的资源器了 ...

  5. android 加载列表占位,Android Paging库使用详解(小结)

    Android分页包能够更轻易地在RecyclerView里面缓慢且优雅地加载数据. 许多应用从数据源消耗数据, 数据源里面有大量的数据, 但是一次却只展示一小部分. 分页包帮助应用观测和展示大量数据 ...

  6. 分散加载描述文件.scf的设置及详解

    转自:https://blog.csdn.net/yyt7529/article/details/4245604 简单应用时可以不写.scf文件.而在"Output"页中选择&qu ...

  7. linux中批量给文件加一行,Linux一行命令处理批量文件详解

    前言 最好的方法不一定是你最快能想到的.工作中针对临时使用的脚本不要求健壮,写出来越快越好.这里提供一种使用sed命令构造命令解决处理批量文件的技巧,供参考. 需求案例1 将当前目录下所有的0_80_ ...

  8. 【笔记】excel预加载word引用

    由于工作需要,做了一些excel操作word的小工具.但是头疼的是,给多个同事用的话需要挨个儿手动加载word引用. 于是乎,在网上找到了解决方案:http://www.exceloffice.net ...

  9. wpsppt加载项在哪里_《wps表格加载项在哪里》 WPS版的EXCEL中 加载宏和数据分析在哪?...

    wps表格里的查找功能在哪? 以WPS 2019版本为例: 可以在工具栏中单击"查找"功能哦. WPS中的excel表格将字段分组在哪 我在wps表格中了一个关于成绩的表格面我们来 ...

  10. wpsppt加载项在哪里_wpsppt加载项在哪里_《wps表格加载项在哪里》 WPS版的EXCEL中 加载宏和数据分析在哪?......

    wps表格里的查找功能在哪? 以WPS 2019版本为例: 可以在工具栏中单击"查找"功能哦. WPS中的excel表格将字段分组在哪 我在wps表格中了一个关于成绩的表格面我们来 ...

最新文章

  1. VS集成环境中的JavaScript脚本语法检查
  2. 2022.2.22显示器连接器引脚信号定义2
  3. CodeForces - 1337E Kaavi and Magic Spell(dp)
  4. 【Flink】Flink kafka producer 分区策略 (flink写入数据不均匀 与 数据写入 分区无数据 )
  5. python入门——P36类和对象:给大家介绍对象
  6. day18【前台】订单
  7. ubunto应用软件
  8. 使用U盘安装Windows操作系统教程
  9. 分享:Battle for Wesnoth 1.11.1 发布,韦诺之战
  10. 基于 钉钉认证 通过 华为、H3C 结合 OpenPortal认证计费系统 实现 网络准入 钉钉授权 实名认证
  11. 计算机四级 信息安全工程师——操作系统题库
  12. Python 复制文件到指定路径
  13. excel补充操作技能2--vlookup函数、Match和Index函数、使用函数统计
  14. 读Spring的源代码六:Controller mapping的注册过程
  15. ARTS-19(C++引用形参,查理芒格的智慧)
  16. 2019全球半导体销售和增速排行榜
  17. 百度云管家 v 5.5.0 破解安装版
  18. php laravel union,教程:Laravel 集合(Collection)的基础用法
  19. html静态网站基于动漫主题网站网页设计与实现共计10个页面——二次元漫画
  20. Java删除文件夹中所有的子目录(不删除本目录)

热门文章

  1. php swach_PHP Switch 语句
  2. VUE项目学习(四):编写个人页面和配置路由
  3. 棋子的移动问题(递归问题)
  4. 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程
  5. 新版烽火HG680-LC、CM211-1zg、M304A ZN、MGV2000爱家tv通刷固件(免拆机)
  6. 实现中文唇语识别的多种途径
  7. Thinkpad 蓝牙键盘 Fn 键处于锁定状态的解决方法
  8. css3切角文本框_html – 用边框制作切角
  9. 华为鸿蒙Matepad 11,你值得拥有的学习、娱乐、办公利器
  10. 【FAQ】应用集成HMS Core部分服务出现“ 6003报错”情况的解决方法来啦