依赖

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

读取结果监听器

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.CellExtra;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import com.ncse.metamanage.bean.db.StandardAggregateInfo;
import com.ncse.metamanage.service.StandardAggregateInfoService;
import lombok.extern.slf4j.Slf4j;import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** @author xipeng*/
@Slf4j
public class StandardAggregateInfoListener implements ReadListener<StandardAggregateInfo> {/*** 每隔100条入库,然后清理list ,方便内存回收*/private static final int BATCH_COUNT = 100;private List<StandardAggregateInfo> cachedDataList = new ArrayList<>(BATCH_COUNT + 1);private StandardAggregateInfoService standardAggregateInfoService;public StandardAggregateInfoListener(StandardAggregateInfoService standardAggregateInfoService) {this.standardAggregateInfoService = standardAggregateInfoService;}@Overridepublic void onException(Exception exception, AnalysisContext context) throws Exception {//        log.error("解析失败,但是继续解析下一行:{}", exception.getMessage());if (exception instanceof ExcelDataConvertException) {ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;log.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(),excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());}throw exception;}@Overridepublic void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {//解析头数据}@Overridepublic void invoke(StandardAggregateInfo data, AnalysisContext context) {log.debug("解析到一条数据:{}", JSON.toJSONString(data));// 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOMif (cachedDataList.size() >= BATCH_COUNT) {saveData();}}private void saveData() {standardAggregateInfoService.saveBatch(cachedDataList);cachedDataList.clear();}@Overridepublic void extra(CellExtra extra, AnalysisContext context) {}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {saveData();}@Overridepublic boolean hasNext(AnalysisContext context) {return false;}
}

工具类

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.ReadListener;
import com.ncse.entity.enums.CommonEnum;
import com.ncse.metamanage.exception.ProjectException;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** @description: 导出excel工具类* @author: XP* @date: 2022/3/31 上午10:18*/
public class ExcelUtil {public static void excelWrite(String fileName, List list, Class clazz, HttpServletResponse response) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");try {EasyExcel.write(response.getOutputStream()).head(clazz).sheet("标准集模板").doWrite(list);} catch (IOException e) {throw new ProjectException(CommonEnum.EXPORT_ERROR, "导出失败");}}public static void readExcel(InputStream inputStream, Class cl, ReadListener readListener) {EasyExcel.read(inputStream, cl, readListener).sheet().headRowNumber(1).doRead();}
}

easyExcel工具类使用相关推荐

  1. easyexcel工具类_阿里巴巴程序员常用的 15 款开发者工具

    从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具, ...

  2. easyexcel 工具类_问了个在阿里的同学,他们常用的15款开发者工具!

    来源:jianshu.com/p/58ec32eef2d4 整理自公众号:程序员闪充宝 从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的 ...

  3. easyexcel 工具类_阿里程序员常用的 15 款开发者工具~

    从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具, ...

  4. EasyExcel工具类(开箱即用)

    所需依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</art ...

  5. Excel解析easyexcel工具类

    本文使用基于阿里的easyexcel编写的工具类对xls后缀的Excel文件(即03版)读取并写成xlsx后缀的Excel文件(即07版),中间转换过程使用String二维数组和对象列表两种形式. e ...

  6. EasyExcel工具类封装, 做到一个函数完成简单的读取和导出

    目录 工具包目录和依赖 工具类 Service实现 Dto类 Controller实现 工具包目录和依赖 工具包目录 依赖(请根据自己需要自行修改版本) <properties><e ...

  7. easyExcel工具类

    引入pom文件 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</ ...

  8. EasyExcel使用与详细说明,EasyExcel工具类

    文章目录 1.Apache POI 1.1 学习使用成本较高 1.2 POI的内存消耗较大 1.3 特点 2. 初识EasyExcel 2.1 重写了POI对07版Excel的解析 2.2 特点 3. ...

  9. EasyExcel使用的正确姿势,工具类封装

    项目中很可能用到导出excel文件的需求. easyexcel代码量较小,使用简单,而且性能较佳,是一个非常好的选择. 源码地址:https://github.com/alibaba/easyexce ...

  10. Excel工具类 - POI / Easyexcel

    在项目中经常使用Excel 文件做导入导出功能,下面介绍两种经常使用的工具类 Apache POI ,Ali EasyExcel. Excel 分为03 版 (xls), 07版(xlsx),下面介绍 ...

最新文章

  1. 怎么安装linux系统 硬盘,如何实现硬盘安装linux系统
  2. 铃铛计数问题——分块
  3. 欧拉回路【洛谷习题】无序字母对
  4. 对渠道流量异常情况的分析
  5. ABB RAPID 在 Notepad++ 中语法高亮的实现
  6. spark集群配置以及java操作spark小demo
  7. 【RK3399Pro学习笔记】八、ROS话题消息的定义与使用
  8. Mac下Apache使用
  9. LeetCode 868. 二进制间距(位运算)
  10. java作业四_Java第四次作业
  11. [转载] 详解Java中的泛型
  12. 苹果CMSv10官方版程序包
  13. angularjs绑定属性_AngularJS隔离范围绑定表达式教程
  14. 在Windows上安装jupyter notebook的scala kernel —— jupyter-scala
  15. 计算机怎么开启tftp服务器,win7电脑如何开启tftp服务器 电脑开启tftp服务器操作方法...
  16. USB转NRF24L01模块 带UI上位机
  17. git 内网搭建_Gitlab搭建内网服务器
  18. ds18b20负温度c语言,温度显示异常DS18B20
  19. 重签名ipa步骤及工具
  20. J2me的基本概念(转)

热门文章

  1. python解超越方程_初试在Python中使用PARI/GP
  2. CSS3 animation动画 - 转风车、loding加载、人物走路等示例
  3. 施密特正交化过程编程c语言,利用C程序编写格拉姆-施密特正交化的过程.docx
  4. Ajax:拥抱JSON,让XML走开
  5. 计算机与通信学院方阵解说词,方阵解说词
  6. ORACLE导出表数据-dmp文件
  7. 月饼事件技术还原 - 用js+Chorme来做抢电商的东西吧
  8. axure rp8 添加动态面板_Axure8怎么使用动态面板?Axure8的使用教程
  9. 如何在Flatter中以正确的方式存储登录凭证
  10. xtu ACM Eason