使用springboot和easypoi进行的数据导出的小案例
在这个案例中使用的有springboot和easypoi进行数据导出到excel中
yml文件是这样的:
- server:
- port: 8080
- spring:
- datasource:
- url: jdbc:mysql://localhost:3306/testuser?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
- username: root
- password: root
- mybatis:
- mapper-locations: classpath*:mapper/*.xml
- mybatis-plus:
- mapper-locations: classpath:/mapper/*Mapper.xml
- log:
- #修改这个路径就可以直接使用在不同的地方进行显示logback
- path: G:/idjavacode/industry4/doc
- level: INFO
引入的依赖有一下几个
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>cn.afterturn</groupId>
- <artifactId>easypoi-base</artifactId>
- <version>3.0.3</version>
- </dependency>
- <dependency>
- <groupId>cn.afterturn</groupId>
- <artifactId>easypoi-web</artifactId>
- <version>3.0.3</version>
- </dependency>
- <dependency>
- <groupId>cn.afterturn</groupId>
- <artifactId>easypoi-annotation</artifactId>
- <version>3.0.3</version>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
- <!-- 文件上传组件 -->
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
- <!--阿里巴巴 fastjson -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.30</version>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-annotation</artifactId>
- <version>3.0.6</version>
- </dependency>
- </dependencies>
这是大致的数据结构,没有写dao层,直接自己模拟的数据将数据进行的导出.
utils工具类是:
- import cn.afterturn.easypoi.excel.ExcelExportUtil;
- import cn.afterturn.easypoi.excel.ExcelImportUtil;
- import cn.afterturn.easypoi.excel.entity.ExportParams;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.springframework.web.multipart.MultipartFile;
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.IOException;
- import java.net.URLEncoder;
- import java.util.List;
- import java.util.Map;
- import java.util.NoSuchElementException;
- /**
- * @Auther:qingmu
- * @Description:脚踏实地,只为出人头地
- * @Date:Created in 16:24 2019/7/17
- */
- public class ExtUtils {
- public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
- boolean isCreateHeader, HttpServletResponse response) {
- ExportParams exportParams = new ExportParams(title, sheetName);
- exportParams.setCreateHeadRows(isCreateHeader);
- defaultExport(list, pojoClass, fileName, response, exportParams);
- }
- public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
- HttpServletResponse response) {
- defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
- }
- public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
- defaultExport(list, fileName, response);
- }
- private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
- ExportParams exportParams) {
- Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
- if (workbook != null)
- ;
- downLoadExcel(fileName, response, workbook);
- }
- private 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) {
- // throw new NormalException(e.getMessage());
- }
- }
- private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
- Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
- if (workbook != null)
- ;
- downLoadExcel(fileName, response, workbook);
- }
- public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) {
- if (StringUtils.isBlank(filePath)) {
- return null;
- }
- ImportParams params = new ImportParams();
- params.setTitleRows(titleRows);
- params.setHeadRows(headerRows);
- List<T> list = null;
- try {
- list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
- } catch (NoSuchElementException e) {
- // throw new NormalException("模板不能为空");
- } catch (Exception e) {
- e.printStackTrace();
- // throw new NormalException(e.getMessage());
- }
- return list;
- }
- public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows,
- Class<T> pojoClass) {
- if (file == null) {
- return null;
- }
- ImportParams params = new ImportParams();
- params.setTitleRows(titleRows);
- params.setHeadRows(headerRows);
- List<T> list = null;
- try {
- list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
- } catch (NoSuchElementException e) {
- // throw new NormalException("excel文件不能为空");
- } catch (Exception e) {
- // throw new NormalException(e.getMessage());
- System.out.println(e.getMessage());
- }
- return list;
- }
- }
实体类:
- import cn.afterturn.easypoi.excel.annotation.Excel;
- import com.baomidou.mybatisplus.annotation.TableField;
- import com.baomidou.mybatisplus.annotation.TableId;
- import com.baomidou.mybatisplus.annotation.TableName;
- import lombok.Data;
- import java.io.Serializable;
- /**
- * @Auther:qingmu
- * @Description:脚踏实地,只为出人头地
- * @Date:Created in 16:34 2019/7/17
- */
- @Data
- @TableName("user")
- public class User implements Serializable {
- private static final long serialVersionUID = 1L;
- @Excel(name = "id", width = 15)
- @TableId("id")
- private int id;
- @Excel(name = "姓名", orderNum = "0", width = 30)
- @TableField("name")
- private String name;
- @TableField("age")
- @Excel(name = "年龄", width = 30)
- private int age;
- }
service层是:
- import com.nums.poi.pojo.User;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @Auther:qingmu
- * @Description:脚踏实地,只为出人头地
- * @Date:Created in 17:22 2019/7/17
- */
- @Service
- public class UserService {
- public List<User> findAll(){
- List<User> listAll = new ArrayList();
- List<User> users = new ArrayList<>();
- User user = new User();
- user.setId(10);
- user.setName("张三");
- user.setAge(25);
- User user1 = new User();
- user1.setId(11);
- user1.setName("张三");
- user1.setAge(26);
- User user2 = new User();
- user2.setId(12);
- user2.setName("张三");
- user2.setAge(27);
- users.add(user);
- users.add(user1);
- users.add(user2);
- listAll.addAll(users);
- return listAll;
- }
- }
controller层是:
- import com.nums.poi.pojo.User;
- import com.nums.poi.service.UserService;
- import com.nums.poi.utils.ExtUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.servlet.http.HttpServletResponse;
- import java.util.List;
- /**
- * @Auther:qingmu
- * @Description:脚踏实地,只为出人头地
- * @Date:Created in 17:31 2019/7/17
- */
- @RestController
- public class ExcelController {
- @Autowired
- private UserService userService;
- @RequestMapping("/execl")
- public void export(HttpServletResponse response){
- List<User> all = userService.findAll();
- ExtUtils.exportExcel(all,"easypoi导出功能","导出sheet1",User.class,"测试user.xls",response);
- }
- }
最后启动springboot,然后通过端口号进行访问.
使用springboot和easypoi进行的数据导出的小案例的更多相关文章
- Winform数据导出Execl小工具
前台界面.cs文件 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- Oracle PLSQL数据导出csv的案例
之前项目运维人员碰到一个问题,需要写一个存储过程,把数据导出为csv文件,查了一些资料,帮他写成了一个PLSQL,今天拿出来分享一下,不足之处,欢迎指教. 数据背景: 用到两张表,一张存放单位组织名 ...
- vue springboot利用easypoi实现简单导出
vue springboot利用easypoi实现简单导出 前言 一.easypoi是什么? 二.使用步骤 1.传送门 2.前端vue 3.后端springboot 3.1编写实体类(我这里是dto, ...
- SpringBoot使用Easypoi导出excel示例
SpringBoot使用Easypoi导出excel示例 https://blog.csdn.net/justry_deng/article/details/84842111
- springboot实现数据库中数据导出Excel功能
[转载]原文地址:https://blog.csdn.net/wilson_m/article/details/79021458 功能介绍 网上查找了一堆的数据导出代码,可能是自己基础比较薄弱的原因还 ...
- 干货 | Elasticsearch、Kibana数据导出实战
1.问题引出 以下两个导出问题来自Elastic中文社区. 问题1.kibana怎么导出查询数据? 问题2:elasticsearch数据导出 就像数据库数据导出一样,elasticsearch可以么 ...
- [django]数据导出excel升级强化版(很强大!)
不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- mssqlserver数据导出到另外一个数据库
mssqlserver数据导出到另外一个数据库 准备源数据库,找到想要导出的数据库,右键选择"任务"再选择"导出数据" 设置源数据库信息 3.设置目标数据库,导 ...
随机推荐
- centos7下使用yum安装mysql5.7.10
原文地址:http://www.mamicode.com/info-detail-503994.html CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql ...
- spaces的坑
spacemacs的坑,改镜像源,不能使用退格 emacs25以上可以装spacemacs 目前在mac上装emacs26.1 使用spacemacs的时候会有melpa.org访问慢或者访问不了的问 ...
- 介绍几款常用的在线API管理工具
在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...
- 数组模拟循环队列(java实现)
1.front变量的含义:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素front的初始值=0. 2.rear变量的含义:rear指向队列的最后一个元素的后一个位置 ...
- JSP的部分知识(二)
指令include和动作include的区别 通过之前的学习知道,JSP最后会被转译成Servlet如果是指令include <%@include file="footer.jsp&q ...
- Python35之包的创建
包(package) 一.创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字 二.在文件夹中创建一个__init__.py的模块文件,内容可以为空 三将相关的模块放入文件夹中 这样就相当于创建 ...
- 题解 CF1216D 【Swords】
大水题,感觉比C题水多了...(证明倒是挺难) 题目大意:额,这个(实在总结不出) 还是题目描述吧:仓库里有$n$种相同数量($x$把)的剑(但你不知道有多少),一天有$y$人闯进了仓库,每人拿了$z ...
- Python--列表中字符串按照某种规则排序的方法
作者:禅在心中 出处:http://www.cnblogs.com/pinking/ 本文版权归作者和博客园共有,欢迎批评指正及转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...
- leetcode动态规划笔记三---单序列型
单序列型DP 相比一维DP,这种类型状态转移与过去每个阶段的状态都有关. Longest Increasing Subsequence : 求最大最小值 Perfect Squares : 求某个规模 ...
- Android--Fragment嵌套的问题
项目中遇到Fragment嵌套应用的问题 子Fragment中要用getChildFragmentManager()方法获取FragmentManager,否则会出问题!