在这个案例中使用的有springboot和easypoi进行数据导出到excel中

yml文件是这样的:

  1. server:
  2. port: 8080
  3. spring:
  4. datasource:
  5. url: jdbc:mysql://localhost:3306/testuser?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
  6. username: root
  7. password: root
  8. mybatis:
  9. mapper-locations: classpath*:mapper/*.xml
  10.  
  11. mybatis-plus:
  12. mapper-locations: classpath:/mapper/*Mapper.xml
  13.  
  14. log:
  15. #修改这个路径就可以直接使用在不同的地方进行显示logback
  16. path: G:/idjavacode/industry4/doc
  17. level: INFO

引入的依赖有一下几个

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-jdbc</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-web</artifactId>
  9. </dependency>
  10.  
  11. <dependency>
  12. <groupId>mysql</groupId>
  13. <artifactId>mysql-connector-java</artifactId>
  14. <scope>runtime</scope>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-test</artifactId>
  19. <scope>test</scope>
  20. </dependency>
  21. <dependency>
  22. <groupId>cn.afterturn</groupId>
  23. <artifactId>easypoi-base</artifactId>
  24. <version>3.0.3</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>cn.afterturn</groupId>
  28. <artifactId>easypoi-web</artifactId>
  29. <version>3.0.3</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>cn.afterturn</groupId>
  33. <artifactId>easypoi-annotation</artifactId>
  34. <version>3.0.3</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.projectlombok</groupId>
  38. <artifactId>lombok</artifactId>
  39. </dependency>
  40. <!-- 文件上传组件 -->
  41. <dependency>
  42. <groupId>commons-fileupload</groupId>
  43. <artifactId>commons-fileupload</artifactId>
  44. <version>1.3.1</version>
  45. </dependency>
  46. <!--阿里巴巴 fastjson -->
  47. <dependency>
  48. <groupId>com.alibaba</groupId>
  49. <artifactId>fastjson</artifactId>
  50. <version>1.2.30</version>
  51. </dependency>
  52. <dependency>
  53. <groupId>com.baomidou</groupId>
  54. <artifactId>mybatis-plus-annotation</artifactId>
  55. <version>3.0.6</version>
  56. </dependency>
  57. </dependencies>

这是大致的数据结构,没有写dao层,直接自己模拟的数据将数据进行的导出.

utils工具类是:

  1. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  2. import cn.afterturn.easypoi.excel.ExcelImportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ExportParams;
  4. import cn.afterturn.easypoi.excel.entity.ImportParams;
  5. import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.apache.poi.ss.usermodel.Workbook;
  8. import org.springframework.web.multipart.MultipartFile;
  9.  
  10. import javax.servlet.http.HttpServletResponse;
  11. import java.io.File;
  12. import java.io.IOException;
  13. import java.net.URLEncoder;
  14. import java.util.List;
  15. import java.util.Map;
  16. import java.util.NoSuchElementException;
  17.  
  18. /**
  19. * @Auther:qingmu
  20. * @Description:脚踏实地,只为出人头地
  21. * @Date:Created in 16:24 2019/7/17
  22. */
  23. public class ExtUtils {
  24. public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
  25. boolean isCreateHeader, HttpServletResponse response) {
  26. ExportParams exportParams = new ExportParams(title, sheetName);
  27. exportParams.setCreateHeadRows(isCreateHeader);
  28. defaultExport(list, pojoClass, fileName, response, exportParams);
  29. }
  30.  
  31. public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
  32. HttpServletResponse response) {
  33. defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
  34. }
  35.  
  36. public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
  37. defaultExport(list, fileName, response);
  38. }
  39.  
  40. private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
  41. ExportParams exportParams) {
  42. Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
  43. if (workbook != null)
  44. ;
  45. downLoadExcel(fileName, response, workbook);
  46. }
  47.  
  48. private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
  49. try {
  50. response.setCharacterEncoding("UTF-8");
  51. response.setHeader("content-Type", "application/vnd.ms-excel");
  52. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
  53. workbook.write(response.getOutputStream());
  54. } catch (IOException e) {
  55. // throw new NormalException(e.getMessage());
  56. }
  57. }
  58.  
  59. private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
  60. Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
  61. if (workbook != null)
  62. ;
  63. downLoadExcel(fileName, response, workbook);
  64. }
  65.  
  66. public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) {
  67. if (StringUtils.isBlank(filePath)) {
  68. return null;
  69. }
  70. ImportParams params = new ImportParams();
  71. params.setTitleRows(titleRows);
  72. params.setHeadRows(headerRows);
  73. List<T> list = null;
  74. try {
  75. list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
  76. } catch (NoSuchElementException e) {
  77. // throw new NormalException("模板不能为空");
  78. } catch (Exception e) {
  79. e.printStackTrace();
  80. // throw new NormalException(e.getMessage());
  81. }
  82. return list;
  83. }
  84.  
  85. public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows,
  86. Class<T> pojoClass) {
  87. if (file == null) {
  88. return null;
  89. }
  90. ImportParams params = new ImportParams();
  91. params.setTitleRows(titleRows);
  92. params.setHeadRows(headerRows);
  93. List<T> list = null;
  94. try {
  95. list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
  96. } catch (NoSuchElementException e) {
  97. // throw new NormalException("excel文件不能为空");
  98. } catch (Exception e) {
  99. // throw new NormalException(e.getMessage());
  100. System.out.println(e.getMessage());
  101. }
  102. return list;
  103. }
  104.  
  105. }

实体类:

  1. import cn.afterturn.easypoi.excel.annotation.Excel;
  2. import com.baomidou.mybatisplus.annotation.TableField;
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. import com.baomidou.mybatisplus.annotation.TableName;
  5. import lombok.Data;
  6.  
  7. import java.io.Serializable;
  8.  
  9. /**
  10. * @Auther:qingmu
  11. * @Description:脚踏实地,只为出人头地
  12. * @Date:Created in 16:34 2019/7/17
  13. */
  14. @Data
  15. @TableName("user")
  16. public class User implements Serializable {
  17. private static final long serialVersionUID = 1L;
  18.  
  19. @Excel(name = "id", width = 15)
  20. @TableId("id")
  21. private int id;
  22.  
  23. @Excel(name = "姓名", orderNum = "0", width = 30)
  24. @TableField("name")
  25. private String name;
  26.  
  27. @TableField("age")
  28. @Excel(name = "年龄", width = 30)
  29. private int age;
  30.  
  31. }

service层是:

  1. import com.nums.poi.pojo.User;
  2. import org.springframework.stereotype.Service;
  3.  
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. /**
  8. * @Auther:qingmu
  9. * @Description:脚踏实地,只为出人头地
  10. * @Date:Created in 17:22 2019/7/17
  11. */
  12. @Service
  13. public class UserService {
  14. public List<User> findAll(){
  15. List<User> listAll = new ArrayList();
  16. List<User> users = new ArrayList<>();
  17.  
  18. User user = new User();
  19. user.setId(10);
  20. user.setName("张三");
  21. user.setAge(25);
  22.  
  23. User user1 = new User();
  24. user1.setId(11);
  25. user1.setName("张三");
  26. user1.setAge(26);
  27.  
  28. User user2 = new User();
  29. user2.setId(12);
  30. user2.setName("张三");
  31. user2.setAge(27);
  32.  
  33. users.add(user);
  34. users.add(user1);
  35. users.add(user2);
  36. listAll.addAll(users);
  37. return listAll;
  38.  
  39. }
  40. }

controller层是:

  1. import com.nums.poi.pojo.User;
  2. import com.nums.poi.service.UserService;
  3. import com.nums.poi.utils.ExtUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7.  
  8. import javax.servlet.http.HttpServletResponse;
  9. import java.util.List;
  10.  
  11. /**
  12. * @Auther:qingmu
  13. * @Description:脚踏实地,只为出人头地
  14. * @Date:Created in 17:31 2019/7/17
  15. */
  16. @RestController
  17. public class ExcelController {
  18.  
  19. @Autowired
  20. private UserService userService;
  21.  
  22. @RequestMapping("/execl")
  23. public void export(HttpServletResponse response){
  24. List<User> all = userService.findAll();
  25. ExtUtils.exportExcel(all,"easypoi导出功能","导出sheet1",User.class,"测试user.xls",response);
  26. }
  27. }

最后启动springboot,然后通过端口号进行访问.

使用springboot和easypoi进行的数据导出的小案例的更多相关文章

  1. Winform数据导出Execl小工具

    前台界面.cs文件 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  2. Oracle PLSQL数据导出csv的案例

    之前项目运维人员碰到一个问题,需要写一个存储过程,把数据导出为csv文件,查了一些资料,帮他写成了一个PLSQL,今天拿出来分享一下,不足之处,欢迎指教. 数据背景:  用到两张表,一张存放单位组织名 ...

  3. vue springboot利用easypoi实现简单导出

    vue springboot利用easypoi实现简单导出 前言 一.easypoi是什么? 二.使用步骤 1.传送门 2.前端vue 3.后端springboot 3.1编写实体类(我这里是dto, ...

  4. SpringBoot使用Easypoi导出excel示例

    SpringBoot使用Easypoi导出excel示例 https://blog.csdn.net/justry_deng/article/details/84842111

  5. springboot实现数据库中数据导出Excel功能

    [转载]原文地址:https://blog.csdn.net/wilson_m/article/details/79021458 功能介绍 网上查找了一堆的数据导出代码,可能是自己基础比较薄弱的原因还 ...

  6. 干货 | Elasticsearch、Kibana数据导出实战

    1.问题引出 以下两个导出问题来自Elastic中文社区. 问题1.kibana怎么导出查询数据? 问题2:elasticsearch数据导出 就像数据库数据导出一样,elasticsearch可以么 ...

  7. [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...

  8. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  9. mssqlserver数据导出到另外一个数据库

    mssqlserver数据导出到另外一个数据库 准备源数据库,找到想要导出的数据库,右键选择"任务"再选择"导出数据" 设置源数据库信息 3.设置目标数据库,导 ...

随机推荐

  1. centos7下使用yum安装mysql5.7.10

    原文地址:http://www.mamicode.com/info-detail-503994.html CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql ...

  2. spaces的坑

    spacemacs的坑,改镜像源,不能使用退格 emacs25以上可以装spacemacs 目前在mac上装emacs26.1 使用spacemacs的时候会有melpa.org访问慢或者访问不了的问 ...

  3. 介绍几款常用的在线API管理工具

    在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...

  4. 数组模拟循环队列(java实现)

    1.front变量的含义:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素front的初始值=0. 2.rear变量的含义:rear指向队列的最后一个元素的后一个位置 ...

  5. JSP的部分知识(二)

    指令include和动作include的区别 通过之前的学习知道,JSP最后会被转译成Servlet如果是指令include <%@include file="footer.jsp&q ...

  6. Python35之包的创建

    包(package) 一.创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字 二.在文件夹中创建一个__init__.py的模块文件,内容可以为空 三将相关的模块放入文件夹中 这样就相当于创建 ...

  7. 题解 CF1216D 【Swords】

    大水题,感觉比C题水多了...(证明倒是挺难) 题目大意:额,这个(实在总结不出) 还是题目描述吧:仓库里有$n$种相同数量($x$把)的剑(但你不知道有多少),一天有$y$人闯进了仓库,每人拿了$z ...

  8. Python--列表中字符串按照某种规则排序的方法

    作者:禅在心中 出处:http://www.cnblogs.com/pinking/ 本文版权归作者和博客园共有,欢迎批评指正及转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

  9. leetcode动态规划笔记三---单序列型

    单序列型DP 相比一维DP,这种类型状态转移与过去每个阶段的状态都有关. Longest Increasing Subsequence : 求最大最小值 Perfect Squares : 求某个规模 ...

  10. Android--Fragment嵌套的问题

    项目中遇到Fragment嵌套应用的问题 子Fragment中要用getChildFragmentManager()方法获取FragmentManager,否则会出问题!