----------------------------------话不多说直接开始

//传参
// fileName 为导出模板
excelUtil.exportExcelTemplate(response,fileName,newsPriceVoList);
//TEMPLATE   是服务器存放文件得路径
//方法
public static void exportExcelTemplate(HttpServletResponse response, String fileName,List<?> data) throws IOException {TemplateExportParams params = new TemplateExportParams(TEMPLATE + fileName, true);Map<String, Object> stringObjectHashMap = new HashMap<>();stringObjectHashMap.put("list",data);response.setHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes("UTF-8"), "iso8859-1"));response.setContentType("application/vnd.ms-excel;charset=UTF-8");response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);BufferedOutputStream bufferedOutPut = new BufferedOutputStream(response.getOutputStream());Workbook workbook = ExcelExportUtil.exportExcel(params,stringObjectHashMap);workbook.write(bufferedOutPut);bufferedOutPut.flush();bufferedOutPut.close();
}
//实体类需要对应下图字段 字段具体可以参照easyPoi官方文档
public class student{//实体类对应模板表格示例
public String name;
public String class;
public String sex;
}

注意一定有闭口{{}}括号 t可以不加,属性字段对应的实体类中的字段

----------------------------分割线,导出到此结束。下边开始导入--------------------------
导入需要注意的点是导入模板和实体类中easy的注解需要对应
·····实体类

//先上实体类 注意要实现IExcelModel 和 IExcelDataModel  两个easypoi接口
@Data
public class StudentExport implements Serializable, IExcelModel, IExcelDataModel {//非空判断@NotBlank(message = "学生姓名不能为空")//对应的excel表 表头信息@Excel(name="学生姓名)")//长度信息@Length(max = 30,message = "长度不可超出30字符")private String name;@NotBlank(message = "班级名称不能为空")@Excel(name="班级名称")@Length(max = 50,message = "长度不可超出50字符")private String class;@Excel(name="性别")private String companyType;//注意 errorMsg; 和 rowNum; 参数一定要进行构造 因为errormsg是主要反应报错信息,比如//学生姓名为空了 在导入的时候这条数据的错误信息就是 -->  //学生姓名不能为空 (对应  @NotBlank或者  @Length 里边的 message)private String errorMsg;private int rowNum;@Overridepublic String getErrorMsg() {return errorMsg;}@Overridepublic void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}@Overridepublic int getRowNum() {return rowNum;}@Overridepublic void setRowNum(int rowNum) {this.rowNum = rowNum;}
}

··导入方法

//传参mallUtil.supplierBatchAdd(file)
//方法public Map supplierBatchAdd(MultipartFile file) {if (!file.isEmpty()) {//文件名称int begin = Objects.requireNonNull(file.getOriginalFilename()).indexOf(".");//文件名称长度int last = file.getOriginalFilename().length();if (file.getSize() > 5242880) {throw new IllegalArgumentException("上传文件不可超5M");}//判断文件格式是否正确String fileName = file.getOriginalFilename().substring(begin, last);if (!fileName.endsWith(".xls") && !fileName.endsWith(".xlsx")) {throw new IllegalArgumentException("上传文件格式有误,仅支持xls、xlsx文件");}} else {throw new IllegalArgumentException("该文件无数据");}//使用EasyPoi获取文件数据ImportParams params = new ImportParams();//标题(设置忽略的行,字段列前几行)params.setTitleRows(5);//表头(列字段占几行)params.setHeadRows(1);//设置验证支持 验证支持开开之后才会判断实体类中的限制i套件params.setNeedVerify(true);//设置读取行数(默认从0开始)params.setReadRows(299);ExcelImportResult<StudentExport > result;List<StudentExport > failList = new ArrayList<>();try {result = ExcelImportUtil.importExcelMore(file.getInputStream(), StudentExport .class, params);} catch (Exception e) {throw new IllegalArgumentException(e.getMessage());}if (result != null) {if (result.isVerfiyFail()) {failList = result.getFailList().stream().filter(b -> !BeanUtil.isEmpty(b, "errorMsg", "rowNum")).collect(Collectors.toList());}if (Integer.sum(result.getList().size(), failList.size()) == 0) {throw new IllegalArgumentException("该文件无数据");}//可以执行新增操作,也可以进行各种逻辑处理方法改造性很强//一定要注意有两个list  一个 failList 是错误数据的集合  result.getList() //是正确数据的集合 可以对这两个集合进行操作//这个map是我自己处理逻辑的操作return   map;}}

导入不难看出导入的匹配规则是根据 excel表的表头进行匹配的

注意一定要实体类和表头对应进行导入


本文结束。有问题留言文章持续更新


easypoi模板导入/模板导出~~一文搞定相关推荐

  1. easypoi 模板导入、导出合并excel单元格功能

    easypoi 模板导入.导出合并单元格功能 参考: hutool 导出复杂excel(动态合并行和列) java使用poi读取跨行跨列excel springboot集成easypoi并使用其模板导 ...

  2. npoi把xlsx文件转为html,C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)...

    这里使用的NPOI版本为: 2.1.3.1 版本内包含.Net 2.0 与.Net 4.0 .Net 4.0中包含文件 使用时需引用需要引用所有5个dll 使用到的引用 using NPOI.HSSF ...

  3. 一文搞定 Spring Data Redis 详解及实战

    转载自  一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...

  4. 一文搞定c++多线程同步机制

    c++多线程同步机制 前序文章:一文搞定c++多线程 同步与互斥 现代操作系统都是多任务操作系统,通常同一时刻有大量可执行实体,则运行着的大量任务可能需要访问或使用同一资源,或者说这些任务之间具有依赖 ...

  5. 一文搞定c++多线程

    一文搞定c++多线程 c++11引入了用于多线程操作的thread类,该库移植性更高,并且使得写多线程变得简洁了一些. 多线程头文件支持 为了支持多线程操作,c++11新标准引入了一些头文件来支持多线 ...

  6. 【Python基础】一文搞定pandas的数据合并

    作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...

  7. 一文搞定pandas的数据合并

    作者:来源于读者投稿 出品:Python数据之道 一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能 ...

  8. php带参数单元测试_一文搞定单元测试核心概念

    基础概念 单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类.单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被 ...

  9. 一文搞定Swing和Qt按钮和文本框的创建

    一文搞定Swing和Qt按钮和文本框的创建 Qt的截图 java的 源码 package com.lujun;import java.awt.Container;import javax.swing. ...

最新文章

  1. 如何通过BIPlatform完成多维报表以及图形配置
  2. CentOS7中使用Dockerfile部署后台jar包
  3. App Store 扣费 知识产权 备忘
  4. 什么是模拟光端机?模拟光端机优缺点介绍!
  5. python读写json_python 读写json数据
  6. java在什么环境变量_Java-环境变量
  7. vb不能插入png图片_收藏备用!!VBA操作图片【插入导出删除】
  8. wxPython:当密码账号输入正确,登录界面消失并显示主界面
  9. 【车道线检测与寻迹】【1月8日】车辆、道路模型与道路跟踪
  10. 【php写日志】php将日志写入文件
  11. 【7集iCore3基础视频】7-5 iTool2驱动安装
  12. Android 11.0 12.0关机界面全屏显示(UI全屏显示)
  13. 已解决Pandas requires version ‘1.4.0‘ or newer of ‘sqlalchemy‘ (version ‘0.7.10‘ currently installed).
  14. 简单阶乘计算 (本题要求实现一个计算非负整数阶乘的简单函数)
  15. Linux安装Docker CE
  16. 大二上---数据结构课程设计
  17. MxNet系列——how_to——new_op
  18. 【Redis核心原理和应用实践】应用 2:缓兵之计 —— 延时队列
  19. 使用 SSM 框架实现发送手机短信验证码
  20. 分析Java未来几年的发展前景

热门文章

  1. extjs的使用笔记2
  2. 大咖说·图书分享|精益产品开发:原则、方法与实施
  3. mysql8.0.23msi安装教程
  4. Unity控制第三人称和相机的移动
  5. 哪种副业挣钱多?副业通过什么方式赚钱的呢?
  6. Unity编辑视图中相机没了?你可能不小心碰到了它
  7. C/C++ 计数排序
  8. IOS 13.4.1如何绕过验证抓取fidd~HTTPS的数据。
  9. 记一次微信小程序UserInfo信息介绍
  10. Visio流程图凸起拱形