easyExcel工具类使用
依赖
<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工具类使用相关推荐
- easyexcel工具类_阿里巴巴程序员常用的 15 款开发者工具
从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具, ...
- easyexcel 工具类_问了个在阿里的同学,他们常用的15款开发者工具!
来源:jianshu.com/p/58ec32eef2d4 整理自公众号:程序员闪充宝 从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的 ...
- easyexcel 工具类_阿里程序员常用的 15 款开发者工具~
从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展. 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具, ...
- EasyExcel工具类(开箱即用)
所需依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</art ...
- Excel解析easyexcel工具类
本文使用基于阿里的easyexcel编写的工具类对xls后缀的Excel文件(即03版)读取并写成xlsx后缀的Excel文件(即07版),中间转换过程使用String二维数组和对象列表两种形式. e ...
- EasyExcel工具类封装, 做到一个函数完成简单的读取和导出
目录 工具包目录和依赖 工具类 Service实现 Dto类 Controller实现 工具包目录和依赖 工具包目录 依赖(请根据自己需要自行修改版本) <properties><e ...
- easyExcel工具类
引入pom文件 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</ ...
- EasyExcel使用与详细说明,EasyExcel工具类
文章目录 1.Apache POI 1.1 学习使用成本较高 1.2 POI的内存消耗较大 1.3 特点 2. 初识EasyExcel 2.1 重写了POI对07版Excel的解析 2.2 特点 3. ...
- EasyExcel使用的正确姿势,工具类封装
项目中很可能用到导出excel文件的需求. easyexcel代码量较小,使用简单,而且性能较佳,是一个非常好的选择. 源码地址:https://github.com/alibaba/easyexce ...
- Excel工具类 - POI / Easyexcel
在项目中经常使用Excel 文件做导入导出功能,下面介绍两种经常使用的工具类 Apache POI ,Ali EasyExcel. Excel 分为03 版 (xls), 07版(xlsx),下面介绍 ...
最新文章
- 怎么安装linux系统 硬盘,如何实现硬盘安装linux系统
- 铃铛计数问题——分块
- 欧拉回路【洛谷习题】无序字母对
- 对渠道流量异常情况的分析
- ABB RAPID 在 Notepad++ 中语法高亮的实现
- spark集群配置以及java操作spark小demo
- 【RK3399Pro学习笔记】八、ROS话题消息的定义与使用
- Mac下Apache使用
- LeetCode 868. 二进制间距(位运算)
- java作业四_Java第四次作业
- [转载] 详解Java中的泛型
- 苹果CMSv10官方版程序包
- angularjs绑定属性_AngularJS隔离范围绑定表达式教程
- 在Windows上安装jupyter notebook的scala kernel —— jupyter-scala
- 计算机怎么开启tftp服务器,win7电脑如何开启tftp服务器 电脑开启tftp服务器操作方法...
- USB转NRF24L01模块 带UI上位机
- git 内网搭建_Gitlab搭建内网服务器
- ds18b20负温度c语言,温度显示异常DS18B20
- 重签名ipa步骤及工具
- J2me的基本概念(转)
热门文章
- python解超越方程_初试在Python中使用PARI/GP
- CSS3 animation动画 - 转风车、loding加载、人物走路等示例
- 施密特正交化过程编程c语言,利用C程序编写格拉姆-施密特正交化的过程.docx
- Ajax:拥抱JSON,让XML走开
- 计算机与通信学院方阵解说词,方阵解说词
- ORACLE导出表数据-dmp文件
- 月饼事件技术还原 - 用js+Chorme来做抢电商的东西吧
- axure rp8 添加动态面板_Axure8怎么使用动态面板?Axure8的使用教程
- 如何在Flatter中以正确的方式存储登录凭证
- xtu ACM Eason