SpringBoot集成EasyPoi实现Excel导入导出
作者介绍:
本人Java特工,代号:Cris Li ; 中文名:克瑞斯理
简书地址: 消失的码农 - 简书
CSDN地址: https://blog.csdn.net/jianli95
个人纯洁版博客: https://lijian69.github.io/blog/
为什么要使用 EasyPoi
分析:当下流行的Excel导出的Poi工具
类型 | 优缺点 | 地址 |
---|---|---|
EasyPOI | 作者推荐:快,方便,集成性高 | http://easypoi.mydoc.io/ |
EasyExcel | alibaba出品的,也是快,方便,但是在样式方面 做的不够好 | https://github.com/alibaba/easyexcel |
POI | poi工具的老大哥,功能超级全,但是学习难度较高,代码的数量较多 |
EasyPoi的详细介绍
easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员
就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板
语言(熟悉的表达式语法),完成以前复杂的写法
独特的功能
- 基于注解的导入导出,修改注解就可以修改Excel
- 支持常用的样式自定义
- 基于map可以灵活定义的表头字段
- 支持一堆多的导出,导入
- 支持模板的导出,一些常见的标签,自定义标签
- 支持HTML/Excel转换,如果模板还不能满足用户的变态需求,请用这个功能
- 支持word的导出,支持图片,Excel
使用步骤
1.maven 或者 Gradle 引入相关依赖
<dependencies><!-- 集成easypoi组件 .导出excel http://easypoi.mydoc.io/ --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.2.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-web</artifactId><version>3.2.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-annotation</artifactId><version>3.2.0</version></dependency><!-- 这个依赖相当于上面 easypoi-base、easypoi-web、easypoi-annotation这3个依赖,可以引入上面3个依赖,也可以引入下面这一个,两个方案二选一--><!-- <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>3.2.0</version></dependency> --></dependencies>
2.定义实体对象(也是 你下载的对象,这里只是简单注解)
@ExcelTarget("20")
@Data
public class User implements java.io.Serializable{@Excel(name = "id", width=15)@NotBlank(message = "该字段不能为空")private Integer id;@Excel(name = "姓名", orderNum = "0", width=30)private String name;@Excel(name = "性别", replace = { "男_1", "女_2" }, orderNum = "1", width=30)private String sex;@Excel(name = "生日", exportFormat = "yyyy-MM-dd", orderNum = "2", width=30)private String birthday;
}
3. Excel导入导出工具类 、封装了调用EasyPoi APi底层接口的Excel导入导出工具类,直接调用工具类即可
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;//Excel导入导出工具类
public class ExcelUtils {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;}}
4.导出即可
List<User> personList = userService.findAll();
// 导出操作
ExcelUtils.exportExcel(personList, "easypoi导出功能", "导出sheet1", User.class, "测试user.xls", re
作者:消失的码农
链接:https://www.jianshu.com/p/c91cd893663d
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
SpringBoot集成EasyPoi实现Excel导入导出相关推荐
- SpringBoot 系列教程(十三):SpringBoot集成EasyPoi实现Excel导入导出
"无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点人工智能教程可以跳转到教程. easyp ...
- 使用Easypoi实现Excel导入导出
EayPoi官方文档 1.Excel的导出 这是我刚开始工作所写的博客,(java小白)为了让自己对这些新学的知识,框架更加的熟悉,熟练,以此来此记录,如有错误,请各位大佬指正!!! 因为公司采用的前 ...
- 集成easypoi实现excel图片导出
我们先来看一眼,跟着本文实现下来的最终效果.如下图所示: 一.引入pom依赖 实现excel图片导出,我们还是得依赖于easypoi来做.所以你们只需要在你们的pom.xml依赖中加上如下easypo ...
- springboot集成easyExcel实现文件导入导出
EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. EasyExcel使用 导入依赖 <de ...
- SpringBoot 项目优雅实现 Excel 导入导出功能
背景 Excel 导入与导出是项目中经常用到的功能,在 Java 中常用 poi 实现 Excel 的导入与导出.由于 poi 占用内存较大,在高并发下很容易发生 OOM 或者频繁 fullgc,阿里 ...
- SpringBoot集成文件 - 集成POI之Excel导入导出
- SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了!
在我们平时工作中经常会遇到要操作Excel的功能,比如导出个用户信息或者订单信息的Excel报表.你肯定听说过POI这个东西,可以实现.但是POI实现的API确实很麻烦,它需要写那种逐行解析的代码(类 ...
- EasyPoi快速入门(Excel导入导出工具)
简介: easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类 ...
- 推荐一款非常好用的Excel导入导出工具EasyPoi
EasyPoi简介 用惯了SpringBoot的朋友估计会想到,有没有什么办法可以直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能? EasyPoi正是这么一款工具, ...
最新文章
- 229页,CMU博士张浩毕业论文公布,探索机器学习并行化的奥秘
- GitHub 上有什么好玩的项目?(附地址)
- 2018年,这15个领域将会呈现指数级变化
- javascript回车完美实现tab切换功能
- html第三方接口,关于调用三方平台接口与推送接口的总结(2020.7.27)
- 看来美国的霸道不仅仅是针对Lenovo的,SONY也被威胁--索尼被判侵犯专利,PlayStation游戏机销售面临威胁【ZZ】...
- Socket编程知识必学/SELECT 编程
- linux域文件夹权限设置密码,如何配置Linux 文件权限(经典详细版本: rwxst)
- Visual Studio 2010 中JS注释制作
- 各路由协议的协议号_厂房转让协议
- xtragrid 某个值 查找_Java 经典算法:二分法查找(循环和递归两种方式实现)
- 华为否认削减手机产量;百度副总裁郑子斌将离职;开发者对苹果发集体诉讼 | 极客头条...
- vue点击网页全屏_vue中实现点击变成全屏的多种方法
- Shell命令-搜索文件或目录之which、find
- LeetCode 33 Search in Rotated Sorted Array(循环有序数组中进行查找操作)
- LCD 驱动的整体分析。
- U盘安装Ubuntu操作系统
- 【广州-互联网-Node.js招聘】
- wireshark怎么抓包、wireshark抓包详细图文教程
- Java面试题-JVM 和服务器性能评估
热门文章
- c++备忘录模式mememto
- c++I/O流的概念和流类库的结构
- 减少C++编译时间的方法
- php 函数传值_传址_函数参数,php函数的传值与传址(引用)详解_PHP教程
- java编写WordCound的Spark程序,Scala编写wordCound程序
- Solr(搜索引擎服务)和MongoDB通过mongodb-connector进行数据同步的解决方案,以及遇到的各种坑的总结(针对solr-5.3.x版本),mongodb和solr实现实时增量索引
- sqlite3命令大全
- 窗口分析函数19_Mysql查询窗口函数里第一个 最后一个 第N个元素的值的案例详解(FIRST_VALUE LAST_VALUE NVH_VALUE)
- Java结合POI清洗Excel
- 曼尼托巴大学计算机硕士录取要求,曼尼托巴大学硕士