EasyExcel是阿里巴巴开源poi插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用。

EasyExcel优势

  • 注解式自定义操作。
  • 输入输出简单,提供输入输出过程的接口
  • 支持一定程度的单元格合并等灵活化操作

二、常用注解

  • @ExcelProperty 指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index,要么全部用名字去匹配。千万别三个混着用,除非你非常了解源代码中三个混着用怎么去排序的。
  • @ExcelIgnore 默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
  • @DateTimeFormat 日期转换,用String去接收excel日期格式的数据会调用这个注解。里面的value参照java.text.SimpleDateFormat
  • @NumberFormat 数字转换,用String去接收excel数字格式的数据会调用这个注解。里面的value参照java.text.DecimalFormat
  • @ExcelIgnoreUnannotated默认不加ExcelProperty 的注解的都会参与读写,加了不会参与

三、依赖

<!-- easyexcel 主要依赖  这一个基本上就够了-->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.4</version>
</dependency><!-- servlet-api -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version>
</dependency>

四、监听


/*** EasyExcel 导入监听*/
public class ExcelListener extends AnalysisEventListener {//可以通过实例获取该值private List<Object> datas = new ArrayList<Object>();@Overridepublic void invoke(Object o, AnalysisContext analysisContext) {datas.add(o);//数据存储到list,供批量处理,或后续自己业务逻辑处理。doSomething(o);//根据自己业务做处理}private void doSomething(Object object) {//1、入库调用接口}public List<Object> getDatas() {return datas;}public void setDatas(List<Object> datas) {this.datas = datas;}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {// datas.clear();//解析结束销毁不用的资源}
}

五、接口导入Excel

try {//获取文件名String filename = file.getOriginalFilename();//获取文件流InputStream inputStream = file.getInputStream();//实例化实现了AnalysisEventListener接口的类ExcelListener listener = new ExcelListener();//传入参数ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);//读取信息excelReader.read(new Sheet(1, 0, Test.class));//获取数据List<Object> list = listener.getDatas();if (list.size() > 1) {for (int i = 0; i < list.size(); i++) {Testobj = (Test) list.get(i);JSONObject jo = new JSONObject();}}} catch (Exception e) {System.out.println(e.getMessage());}

六、接口导出Excel (HttpServletResponse response, HttpServletRequest request)


try {String filenames = "111111";String userAgent = request.getHeader("User-Agent");if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {filenames = URLEncoder.encode(filenames, "UTF-8");} else {filenames = new String(filenames.getBytes("UTF-8"), "ISO-8859-1");}response.setContentType("application/vnd.ms-exce");response.setCharacterEncoding("utf-8");response.addHeader("Content-Disposition", "filename=" + filenames + ".xlsx");EasyExcel.write(response.getOutputStream(), Test.class).sheet("sheet").doWrite(testList);
} catch (Exception e) {
}

七、本地导入、本地导出

List<Test> testList = new ArrayList<>();
try {String strUrl = "C:\\Users\\Administrator\\Desktop\\json.xlsx";File multipartFile = new File(strUrl);InputStream inputStream = new FileInputStream(multipartFile);//实例化实现了AnalysisEventListener接口的类ExcelListener listener = new ExcelListener();//传入参数ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);//读取信息excelReader.read(new Sheet(1, 0, Test.class));//获取数据List<Object> list = listener.getDatas();if (list.size() > 1) {for (int i = 0; i < list.size(); i++) {Testobj = (Test) list.get(i);}}
} catch (Exception e) {System.out.println(e.getMessage());
}
try {String strUrl = "C:\\Users\\Administrator\\Desktop\\json"+System.currentTimeMillis()+".xlsx";EasyExcel.write(strUrl,Test.class).sheet("sheet").doWrite(testList);
} catch (Exception e) {
}

以上就是EasyExcel的基础使用过程,欢迎点赞关注交流。

作者:程序员阿浪

链接:https://www.jianshu.com/p/4e6aa6342b33

SpringBoot集成EasyExcel的使用相关推荐

  1. springboot集成easyExcel实现文件导入导出

    EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. EasyExcel使用 导入依赖 <de ...

  2. 轻松玩转Excel,springboot集成easyexcel

    最近这不又接到一个需求,上游用户想要下载上报给我们的列表数据,用来进行一些简单的线下分析. 用户的需求必须满足啊!于是我就吭哧吭哧的找到俺的chrome大哥,立即所搜"springboot下 ...

  3. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  4. SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...

  5. springboot集成swagger2测试接口

    springboot集成swagger2测试接口 1.需要的依赖 2.开始编写一个swagger2 3.演示效果图片 1.需要的依赖 <dependency><groupId> ...

  6. springboot 集成logback

    springboot 集成logback 1.application.properties配置文件指定logback.xml logging.config=classpath:logback.xml ...

  7. springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题

    springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题 参考文章: (1)springboot集成swagger2多模块中文配 ...

  8. SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null)

    SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null) 参考文章: (1)SpringBoot集成Quartz(解决@Autowired空指针Nu ...

  9. SpringBoot集成全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> SpringBoot集成全局异常处理 前言 对于通常的MVC项目,大量的异常需要我们去处理,如此一来,我们的 Controll ...

  10. dubbo web工程示例_dubbo实战之二:与SpringBoot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类和汇总,及配套源码,涉及Java.Docker.Kubernetes.DevO ...

最新文章

  1. 如何在文件夹中运行cmd命令行
  2. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...
  3. 零基础自学python教程-零基础入门学习Python_Python教程
  4. python中定义的函数不掉用不会执行_如果出现异常/错误,如何不在python中停止执行其他函数...
  5. VTK:几何对象之PlaneSource
  6. Web安全实践(14)嗅探,arp欺骗,会话劫持与重放攻击(下)
  7. Mahout分类算法学习之实现Naive Bayes分类示例
  8. EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)
  9. Git 各指令的本质,真是通俗易懂啊
  10. 笔试面试常考数据结构-单链表常用操作编程实现
  11. js long类型精度丢失_解决js处理Long类型丢失精度的问题
  12. python3连接mysql获取ansible动态inventory
  13. android之app自动启动
  14. 计算机组装与维修的前言,计算机组装与维修论文大纲模板 计算机组装与维修论文提纲如何写...
  15. 传统软件厂商生存模式推演
  16. 0和1的艺术,与、或、非基本逻辑门电路
  17. 【云原生 | 13】手把手教你搭建ferry开源工单系统
  18. 无线网能连接上但无法连接服务器是啥原因,腾达无线路由器能连接但是上不了网怎么办...
  19. [翻译] Overleaf 中的语法检查 - Spell check language
  20. outlook 服务器未响应,出现错误,Outlook 无法设置你的帐户

热门文章

  1. 在网页设计中如何排版
  2. vlan是什么?如何划分vlan?如何实现vlan?使用vlan的优点!
  3. python(十)——文件读写、OS模块、win32控制窗体、语音合成
  4. 02-DDL 数据定义语言
  5. 2022牛客寒假算法基础集训营1 H题 牛牛看云
  6. 群星闪耀 视觉科技史上引领我们前进的不朽瞬间
  7. 启动springboot项目APPLICATION FAILED TO START
  8. 在线把pdf文件转换成word详细教程
  9. matlab中argmax_argmin(matlab中argmin函数)
  10. nginx的安装以及简单代理域名