一、工具类

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;/*** Excel 工具类**/
public class ExcelUtils {/*** 将列表以 Excel 响应给前端** @param response 响应* @param filename 文件名* @param sheetName Excel sheet 名* @param head Excel head 头* @param data 数据列表哦* @param <T> 泛型,保证 head 和 data 类型的一致性* @throws IOException 写入失败的情况*/public static <T> void write(HttpServletResponse response, String filename, String sheetName,Class<T> head, List<T> data) throws IOException {// 输出 ExcelEasyExcel.write(response.getOutputStream(), head).autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度.sheet(sheetName).doWrite(data);// 设置 header 和 contentType。写在最后的原因是,避免报错时,响应 contentType 已经被修改了response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));response.setContentType("application/vnd.ms-excel;charset=UTF-8");}public static <T> List<T> read(MultipartFile file, Class<T> head) throws IOException {return EasyExcel.read(file.getInputStream(), head, null).autoCloseStream(false)  // 不要自动关闭,交给 Servlet 自己处理.doReadAllSync();}}

二、导入示例

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;/*** 用户 Excel 导入 VO*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
public class UserImportExcelVO {@ExcelProperty("登录名称")private String username;@ExcelProperty("用户名称")private String nickname;@ExcelProperty("部门编号")private Long deptId;@ExcelProperty("用户邮箱")private String email;@ExcelProperty("手机号码")private String mobile;@ExcelProperty(value = "用户性别")private Integer sex;@ExcelProperty(value = "账号状态")private Integer status;}
 public CommonResult<UserImportRespVO> importExcel(@RequestParam("file") MultipartFile file,@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {List<UserImportExcelVO> list = ExcelUtils.read(file, UserImportExcelVO.class);return success(userService.importUsers(list, updateSupport));}

三、导出示例

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;import java.util.Date;/*** 用户 Excel 导出 VO*/
@Data
public class UserExcelVO {@ExcelProperty("用户编号")private Long id;@ExcelProperty("用户名称")private String username;@ExcelProperty("用户昵称")private String nickname;@ExcelProperty("用户邮箱")private String email;@ExcelProperty("手机号码")private String mobile;@ExcelProperty(value = "用户性别")private Integer sex;@ExcelProperty(value = "帐号状态")private Integer status;}
 public void exportUsers(HttpServletResponse response) throws IOException {// 获得用户列表  List<UserExcelVO> excelUsers = new ArrayList<>();//业务代码// 输出ExcelUtils.write(response, "用户数据.xls", "用户列表", UserExcelVO.class, excelUsers);}

java开发excel导入导出工具类基于EasyExcel相关推荐

  1. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  2. java Excel导入导出工具类 及使用demo

    java Excel导入导出工具类 及使用demo 前言:相信进来的都是想尽快解决问题的,话不多说,按照以下步骤来,可以操作导出excel到本地,导入同理,自行学习.步骤一:直接复制以下excel工具 ...

  3. Java操作百万数据量Excel导入导出工具类(程序代码教程)

    Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...

  4. Excel导入导出工具类

    目录 1.mavn jar 2 工具类代码 2.1 ExcelUtil 2.2 引用自写类 2.2.1 ExcelMsg 2.2.2 CellDataType 2.2.3 SaxReadExcelUt ...

  5. Java poi 实现excel导入导出工具类

    最近项目上又要大量的涉及excel导入导出,网上各种导入导出的方式层出不穷,我是比较青睐官方的poi,但是要自己去操作工作簿对象自己一行一行的读取,会有很多的重复代码,重复劳动,也极为不美观,基于合成 ...

  6. excel导入导出工具类_Hutool Java工具类库导出Excel,超级简单

    前言 在开发应用系统的时候,导出文件是必不可少的功能. 以前用过POI.easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用. 今天给大家介绍一款新工具,java工具 ...

  7. Excel导入导出工具类(多sheet、多表头、单元格下拉选择、根据列名匹配转为List)

    一.多sheet 通过配置动态生成多个工作表(sheet),自定义sheet的名称,如下效果图: 二.多表头 通过配置生成多表头,效果图如下: 主要核心代码: // 赋值后,执行合并单元格 log.t ...

  8. 炎炎夏日最新版Excel导入导出工具类火热出炉

    辛苦写的,转载请注明来源^_^ 一.为什么要写这个Excel工具类 上个项目有个功能点需要导出信息到Excel文件,于是到网上找了工具类xdemo,首先感谢原作者的奉献,使用很简单.但在使用的过程中也 ...

  9. Java基础学习总结(49)——Excel导入导出工具类

    在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...

最新文章

  1. 【Ubuntu】使用过的ubuntu工具记录
  2. c# WebApi之身份验证:Basic基础认证
  3. pythonsql注入步骤_防止SQL注入解决方案
  4. BZOJ1970 [Ahoi2005] 矿藏编码
  5. [Python学习] Django 权限控制
  6. Java基础语法结构
  7. Oracle中文乱码(中文变问号?)解决方法---简单粗暴高效
  8. 流媒体视频网络 Tout 获 2600 万美元 C 轮融资
  9. 金山助手流氓软件-被进程sjk_daemon.exe坑死
  10. con 元器件符号_关于元器件名称、符号和封装的命名问题
  11. google cloud api 安装
  12. 我们如何一键识别?拍照识别植物的软件有哪些?
  13. 基础实验4-2.7 修理牧场
  14. MyBatis foreach 标签常用方法总结
  15. 如何管理计算机中文件,如何管理电脑文件
  16. 孩子长高应该吃什么呢?
  17. PS中括号不能调整画笔或仿章大小
  18. h5移动端判断 是否是微信浏览器
  19. 【毕业季 进击的技术er】一个研二大龄青年的自白
  20. 以太坊智能合约交互调用,web3.js,web3j两种方式实现

热门文章

  1. rust 贪图碎片_如果智慧结晶碎片可兑换暗魂水晶,你能否做到一秒毕业
  2. StringBuilder比String快?空嘴白牙证据呢
  3. java 设置默认list,java – 如何设置ListPreference的默认值
  4. echarts中当横轴的数据过多的时候,可以在横轴加一个滚动条,还可以设置横轴一次显示多少个数据
  5. Java父亲节贺卡,父亲节贺卡内容怎么写?
  6. jquery on()方法 off()方法
  7. Android开发丶将网络获取到的列表数据重新排序
  8. 国外社交网站的share分享
  9. 这台计算机无法连接到服务器,请确认网络连接是否正常,Win7玩英雄联盟提示“无法连接到服务器,请检查您的网络连接”六种解决方法...
  10. 2014年最酷的30个JavaScript库