EasyExcel

EasyExcel是一个基于Java的简单 省内存的读写Excel的开源项目

在尽可能节约内存的情况下支持读写百M的Excel

第一步 引入依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.1</version>
</dependency>

第二步 创建vo类

在对应属性上添加注解

设置表头内容

DictEeVo类用于将实体类Dict中的数据映射到Excel表中

@Data
public class DictEeVo {
​@ExcelProperty(value = "id" ,index = 0)private Long id;
​@ExcelProperty(value = "上级id" ,index = 1)private Long parentId;
​@ExcelProperty(value = "名称" ,index = 2)private String name;
​@ExcelProperty(value = "值" ,index = 3)private String value;
​@ExcelProperty(value = "编码" ,index = 4)private String dictCode;
​
}

第三步 实现操作具体代码

写操作

public void exportDictData(HttpServletResponse response) {//设置下载信息response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");String fileName = "dict";response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");//查询数据库List<Dict> dictList = baseMapper.selectList(null);//Dict -- DictEeVoList<DictEeVo> dictVoList = new ArrayList<>();for(Dict dict:dictList) {DictEeVo dictEeVo = new DictEeVo();// dictEeVo.setId(dict.getId());BeanUtils.copyProperties(dict,dictEeVo);dictVoList.add(dictEeVo);}//调用方法进行写操作try {EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("dict").doWrite(dictVoList);} catch (IOException e) {e.printStackTrace();}
}

读操作

创建Listener

public class DictListener extends AnalysisEventListener<DictEeVo> {
​private DictMapper dictMapper;
​public DictListener(DictMapper dictMapper) {this.dictMapper = dictMapper;}
​//一行一行进行读取@Overridepublic void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {Dict dict = new Dict();//将dictEeVo中的属性值按照属性名赋值到dict的属性中BeanUtils.copyProperties(dictEeVo,dict);//调用方法添加数据库dictMapper.insert(dict);}
​@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {
​}
}

使用EasyExcel类的静态方法read进行读取

public void importDictData(MultipartFile file) {//file是传入的excel表文件try {EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(baseMapper)).sheet().doRead();} catch (IOException e) {e.printStackTrace();}
}

EasyPoi

easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法

Easypoi的目标不是替代poi,而是让一个不懂导入导出的快速使用poi完成Excel和word的各种操作,而不是看很多api才可以完成这样工作

第一步 引入依赖

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.1.3</version>
</dependency>

第二步 在实体类对应的属性上添加注解

@Data
public class Employee {private Integer id;
​@Excel(name = "员工姓名")private String name;
​@Excel(name = "性别")private String gender;
​@Excel(name = "出生日期",width = 20,format = "yyyy-MM-dd")private LocalDate birthday;
}

第三步 实现操作具体代码

写操作

public void exportEmployee(HttpServletResponse response){//查询数据库List<Employee> list = employeeService.getEmployee(null);//设置导出参数ExportParams params = new ExportParams("员工表","员工表", ExcelType.HSSF);//生成ExcelWorkbook workbook = ExcelExportUtil.exportExcel(params,Employee.class,list);
​ServletOutputStream out = null;try {//用流的形式传输response.setHeader("content-type","application/octet-stream");//暴露content-dispositionresponse.setHeader("Access-Control-Expose-Headers", "content-disposition");//防止中文乱码response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode("员工表.xls","UTF-8"));out = response.getOutputStream();//使用ServletOutputStream输出流将Excel文件传输至客户端workbook.write(out);} catch (IOException e) {e.printStackTrace();}finally {if(null!=out){try {out.close();} catch (IOException e) {e.printStackTrace();}}}
}

读文件

public RespBean importEmployee(MultipartFile file){//设置导入参数ImportParams params = new ImportParams();//去掉第一行标题行params.setTitleRows(1);try {List<Employee> list = ExcelImportUtil.importExcel(file.getInputStream(), Employee.class, params);//将数据储存至数据库,并向客户端返回结果if(employeeService.saveBatch(list)){return RespBean.success("导入成功");}} catch (Exception e) {e.printStackTrace();}return RespBean.error("导入失败");
}

EasyExcel与EasyPoi的基本使用案例相关推荐

  1. EasyExcel与EasyPoi性能对比

    最近在搞导出的一个服务,老板让对一些框架做一个分析,所以有了这篇文章. 服务器配置:2核16g内存 服务配置:java最大堆栈内存为1g EasyExcel 阿里维护的一款导出框架,导出的为xlsx, ...

  2. easyPOI和easyExcel对图片的导出

    导出带图片的excel 前言 Apache poi.jxl 的缺陷 阿里出品的 EasyExcel EasyExcel 解决了什么 easyPOI easyExel 前言 关于导出 Excel 文件, ...

  3. 阿里云EasyExcel读写excel表数据

    阿里云EasyExcel读取excel表数据 1.待读取的excel表test.xls 2.导入Maven依赖 <dependency><groupId>com.alibaba ...

  4. easyexcel 动态合并单元格

    easyexcel 动态合并单元格 目前操作excel文档的底层都是用poi来进行的,在早期工作开发过程中,是基于poi,然后对每一个数据单元格进行操作代码编写,后面有一些比较好的开源项目,像easy ...

  5. EasyExcel实现Excel文件多sheet导入导出

    一.概述 最近公司需要做一个需求,通过excel上传病例信息,并将病例信息进行归档和整理:该需求可以简化为excel模板下载和excel上传并解析归档.既然知道需求了,找excel的操作工具jar包吧 ...

  6. Java的Excel导出方案介绍

    Apache POI方案可以对数据导出成excel表格,大部分的教程也都是基于poi进行的,但是基于poi他的api比较复杂 现在流行的一个方案就是对poi进行封装,把api的细节屏蔽,直接跟实体类进 ...

  7. springboot+poi支持excel版本问题

    在java开发中操作excel的传统组件poi如何支持xls.xlsx? poi是apache下的一个开源项目,对公式支持较好,支持压缩excel.基本原理就是将excel表格数据读取出来组成一个li ...

  8. excel下载打包总结

    一.poi下载 excel 下载其实就是创建一个新的workbook, 前端请求url地址; 后台通过流的方式直接输出到页面.不需要前端有操作 一共有两总方式: 1. 创建一个workbook类,然后 ...

  9. Java ClassCastException: xxx cannot be cast to xxx 问题4种情况解决(Java、EasyPoi、JFreeChart、EasyExcel)

    目录 1 问题描述 2 问题分析 2.1 Java 2.2 EasyPoi 2.3 JFreeChart 2.4 EasyExcel 1 问题描述 java.lang.ClassCastExcepti ...

最新文章

  1. DNN module.css文件不起作用的解决
  2. 大厂程序媛的特殊烦恼:男朋友工资只有自己的60%,天天阴阳怪气!
  3. EcoTalks预告 | Max Rietkerk:自然斑图与生态系统的恢复力
  4. 腾讯面试官用「B+树」虐哭我了
  5. 在Tomcat中部署Java Web应用程序几种方式
  6. Eclipse更改系统主题
  7. c#中调用Excel
  8. Android 插件框架实现思路及原理
  9. csrf攻击 java_java使用jsp servlet来防止csrf 攻击的实现方法
  10. 拦截器原理多个拦截器执行顺序
  11. go init函数_面试录 Go语言篇 内存模型
  12. 组合模式_Java设计模式-组合模式
  13. CSS绝对定位absolute元素的初始包含块不是body元素,也不是html元素
  14. Python取出SQL表单中的字段名
  15. 深入了解前端开发中的高度、宽度问题
  16. 使用pdf.js插件与LODOP控件实现前端浏览器静默打印PDF文件
  17. 新手入坑GMSSL(二)GMSSL双证书生成
  18. 色彩构成与搭配——人对色彩的感觉
  19. kaggel竞赛之员工离职分析
  20. 数据分析|SQL面试题集锦

热门文章

  1. 平板电脑怎么使用计算机,如何将华为平板电脑连接到计算机?
  2. 如何在WORD的框框里打钩
  3. 传奇装备锻造升级UPGRADEITEMEX功能详解
  4. appium android函数,Appium(一):appium环境以及基础函数的封装
  5. mr图像翻转的原因_【MR技术】为什么有时压脂图像黑了一块?
  6. 痞子衡嵌入式:改动i.MXRT1xxx里IOMUXC_GPR寄存器保留位可能会造成系统异常
  7. java ignorecase_JavaScript中的ignoreCase属性使用方法
  8. latex 使用enumitem包来调整itemize,enumerate列表间距
  9. 【产品实操】三分钟教你快速搭建字符识别CNN模型
  10. Cocos 去除默认页 web端 (有小黑块的情况)