java开发excel导入导出工具类基于EasyExcel
一、工具类
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相关推荐
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- java Excel导入导出工具类 及使用demo
java Excel导入导出工具类 及使用demo 前言:相信进来的都是想尽快解决问题的,话不多说,按照以下步骤来,可以操作导出excel到本地,导入同理,自行学习.步骤一:直接复制以下excel工具 ...
- Java操作百万数据量Excel导入导出工具类(程序代码教程)
Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...
- Excel导入导出工具类
目录 1.mavn jar 2 工具类代码 2.1 ExcelUtil 2.2 引用自写类 2.2.1 ExcelMsg 2.2.2 CellDataType 2.2.3 SaxReadExcelUt ...
- Java poi 实现excel导入导出工具类
最近项目上又要大量的涉及excel导入导出,网上各种导入导出的方式层出不穷,我是比较青睐官方的poi,但是要自己去操作工作簿对象自己一行一行的读取,会有很多的重复代码,重复劳动,也极为不美观,基于合成 ...
- excel导入导出工具类_Hutool Java工具类库导出Excel,超级简单
前言 在开发应用系统的时候,导出文件是必不可少的功能. 以前用过POI.easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用. 今天给大家介绍一款新工具,java工具 ...
- Excel导入导出工具类(多sheet、多表头、单元格下拉选择、根据列名匹配转为List)
一.多sheet 通过配置动态生成多个工作表(sheet),自定义sheet的名称,如下效果图: 二.多表头 通过配置生成多表头,效果图如下: 主要核心代码: // 赋值后,执行合并单元格 log.t ...
- 炎炎夏日最新版Excel导入导出工具类火热出炉
辛苦写的,转载请注明来源^_^ 一.为什么要写这个Excel工具类 上个项目有个功能点需要导出信息到Excel文件,于是到网上找了工具类xdemo,首先感谢原作者的奉献,使用很简单.但在使用的过程中也 ...
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
最新文章
- 【Ubuntu】使用过的ubuntu工具记录
- c# WebApi之身份验证:Basic基础认证
- pythonsql注入步骤_防止SQL注入解决方案
- BZOJ1970 [Ahoi2005] 矿藏编码
- [Python学习] Django 权限控制
- Java基础语法结构
- Oracle中文乱码(中文变问号?)解决方法---简单粗暴高效
- 流媒体视频网络 Tout 获 2600 万美元 C 轮融资
- 金山助手流氓软件-被进程sjk_daemon.exe坑死
- con 元器件符号_关于元器件名称、符号和封装的命名问题
- google cloud api 安装
- 我们如何一键识别?拍照识别植物的软件有哪些?
- 基础实验4-2.7 修理牧场
- MyBatis foreach 标签常用方法总结
- 如何管理计算机中文件,如何管理电脑文件
- 孩子长高应该吃什么呢?
- PS中括号不能调整画笔或仿章大小
- h5移动端判断 是否是微信浏览器
- 【毕业季 进击的技术er】一个研二大龄青年的自白
- 以太坊智能合约交互调用,web3.js,web3j两种方式实现
热门文章
- rust 贪图碎片_如果智慧结晶碎片可兑换暗魂水晶,你能否做到一秒毕业
- StringBuilder比String快?空嘴白牙证据呢
- java 设置默认list,java – 如何设置ListPreference的默认值
- echarts中当横轴的数据过多的时候,可以在横轴加一个滚动条,还可以设置横轴一次显示多少个数据
- Java父亲节贺卡,父亲节贺卡内容怎么写?
- jquery on()方法 off()方法
- Android开发丶将网络获取到的列表数据重新排序
- 国外社交网站的share分享
- 这台计算机无法连接到服务器,请确认网络连接是否正常,Win7玩英雄联盟提示“无法连接到服务器,请检查您的网络连接”六种解决方法...
- 2014年最酷的30个JavaScript库