《springboot中实现excel表格导出》

简介

在Spring Boot中,实现Excel表格导出的方式有很多种,以下是几种常见的方法:

  1. 使用Apache POI:Apache POI是一个开源的Java API,用于处理Microsoft Office文档格式,包括Excel电子表格。在Spring Boot中,可以使用Apache POI创建Excel文档,并将其写入HTTP响应中,以实现Excel表格的导出。
  2. 使用EasyPOI:EasyPOI是一个开源的Java API,用于处理Excel电子表格。它基于Apache POI和Jxls开发,提供了更加简单易用的API,可以帮助我们快速实现Excel表格的导出。
  3. 使用Jxls:Jxls是一个用于生成Excel报表的Java库。在Spring Boot中,可以使用Jxls创建Excel文档,并将其写入HTTP响应中,以实现Excel表格的导出。
  4. 使用第三方库:还有其他一些第三方的Java库可以用于生成Excel电子表格,例如Aspose.Cells、JExcelApi等,它们也可以在Spring Boot中使用,实现Excel表格的导出。

需要注意的是,无论使用哪种方法,都需要将Excel文档写入HTTP响应中,并设置正确的Content-Type和Content-Disposition头信息,以确保浏览器能够正确地识别Excel文档并下载它。

一、Apache POI

  • maven依赖坐标
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>
@RestController
public class ExcelController {@GetMapping("/export")public void exportExcel(HttpServletResponse response) throws Exception {// 创建Excel文档XSSFWorkbook workbook = new XSSFWorkbook();XSSFSheet sheet = workbook.createSheet("Sheet1");// 创建表头XSSFRow header = sheet.createRow(0);header.createCell(0).setCellValue("姓名");header.createCell(1).setCellValue("年龄");header.createCell(2).setCellValue("性别");// 填充数据List<User> users = getUserList();int rowIndex = 1;for (User user : users) {XSSFRow row = sheet.createRow(rowIndex++);row.createCell(0).setCellValue(user.getName());row.createCell(1).setCellValue(user.getAge());row.createCell(2).setCellValue(user.getGender());}// 设置响应头信息response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");// 将Excel文档写入响应流中ServletOutputStream outputStream = response.getOutputStream();workbook.write(outputStream);outputStream.flush();outputStream.close();}// 模拟获取用户数据private List<User> getUserList() {List<User> users = new ArrayList<>();users.add(new User("张三", 25, "男"));users.add(new User("李四", 30, "女"));users.add(new User("王五", 28, "男"));return users;}// 用户实体类private static class User {private String name;private int age;private String gender;public User(String name, int age, String gender) {this.name = name;this.age = age;this.gender = gender;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}}
}

二、Easy POI

  • maven依赖坐标
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.2.0</version>
</dependency>
<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>4.2.0</version>
</dependency>
@RestController
public class ExcelController {@GetMapping("/export")public void exportExcel(HttpServletResponse response) throws Exception {// 创建Excel文档Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户列表", "用户信息"), User.class, getUserList());// 设置响应头信息response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");// 将Excel文档写入响应流中ServletOutputStream outputStream = response.getOutputStream();workbook.write(outputStream);outputStream.flush();outputStream.close();}// 模拟获取用户数据private List<User> getUserList() {List<User> users = new ArrayList<>();users.add(new User("张三", 25, "男"));users.add(new User("李四", 30, "女"));users.add(new User("王五", 28, "男"));return users;}// 用户实体类private static class User {@Excel(name = "姓名", orderNum = "0")private String name;@Excel(name = "年龄", orderNum = "1")private int age;@Excel(name = "性别", orderNum = "2")private String gender;public User(String name, int age, String gender) {this.name = name;this.age = age;this.gender = gender;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}}
}

三、Jxls

  • maven依赖坐标
<dependency><groupId>org.jxls</groupId><artifactId>jxls</artifactId><version>2.14.0</version>
</dependency>
<dependency><groupId>org.jxls</groupId><artifactId>jxls-poi</artifactId><version>2.14.0</version>
</dependency>
@RestController
public class ExcelController {@GetMapping("/export")public void exportExcel(HttpServletResponse response) throws Exception {// 加载Excel模板InputStream inputStream = getClass().getResourceAsStream("/templates/user_template.xlsx");Workbook workbook = WorkbookFactory.create(inputStream);// 填充数据List<User> users = getUserList();Map<String, Object> model = new HashMap<>();model.put("users", users);JxlsHelper.getInstance().processTemplate(model, workbook.getSheetAt(0));// 设置响应头信息response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");// 将Excel文档写入响应流中ServletOutputStream outputStream = response.getOutputStream();workbook.write(outputStream);outputStream.flush();outputStream.close();}// 模拟获取用户数据private List<User> getUserList() {List<User> users = new ArrayList<>();users.add(new User("张三", 25, "男"));users.add(new User("李四", 30, "女"));users.add(new User("王五", 28, "男"));return users;}// 用户实体类private static class User {private String name;private int age;private String gender;public User(String name, int age, String gender) {this.name = name;this.age = age;this.gender = gender;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}}
}

《springboot中实现excel表格导出》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 开放式Android联盟成立
  2. 《python数据分析实战》第七章手写
  3. 2017国二java题库,2017全国计算机二级考试JAVA考试题库
  4. 普林斯顿计算机科学系,普林斯顿大学计算机科学系
  5. 科大星云诗社动态20201123
  6. 一个使用Logging Application Block的小问题[xgluxv]
  7. c语言对c99标准声明,C语言中C89与C99的区别
  8. javaWeb(入门基础详解)
  9. EasyUI权限(二星权限)
  10. idea 内嵌浏览器 翻译
  11. php判断搜索为空,【杂谈】PHP怎么判断变量是否为空和是否有值存在?(图文+视频教程)...
  12. ubantu下部署python
  13. ABAP取销售订单长文本
  14. 基于Java毕业设计疫情下的居民管理系统源码+系统+mysql+lw文档+部署软件
  15. Shell进阶(三) 交互式脚本 函数 数组 分片 字符串处理
  16. 用vis数组保证只入队一次P5594 【XR-4】模拟赛
  17. vb html listview,VB中listview控件
  18. 纸小墨ink简洁主题story爱上你的故事
  19. 国密算法分类总结:sm2,sm3,sm4等
  20. MySQL基础知识——ALTER TABLE

热门文章

  1. mt管理器破解QQ语音口令红包
  2. iOS13.1.1你更新了吗?果iPhoneXR升级之后屏幕失灵、耗电更快
  3. 浮点加法、减法, 乘法、除法运算
  4. 关于打开酷狗就无法进行android程序调试的问题
  5. 机器学习数学方面的介绍[计算机数学专题(9)]
  6. python怎么求圆柱表面积半径和高由键盘输入_从键盘上输入圆的半径,计算圆的周长和面积(使用符号常量)_学小易找答案...
  7. c语言程序设计正方体,2015年第六届蓝桥杯C/C++程序设计本科B组决赛 完美正方形...
  8. 如何让路由器重启不丢失配置
  9. 网页更新提醒技术架构
  10. 机器学习系列 | 线性回归模型(简单线性回归、局部线性回归、非线性关系)