EasyExcel - API
使用时一般时配合SpringBoot项目
该文参照博客地址 原创地址
一般 用 maven 去引入
EasyExcel
的依赖
在maven
仓库搜索EasyExcel
选择喜欢(最新)的版本,复制到pom.xml 刷新maven
即可!
这里是 maven仓库地址
常用注解:
@ExcelProperty : 指定当前字段对应excel的那一列.可以根据名字或者下标去匹配(下标从0开始),不写的默认按照顺序匹配;value 字段对应excel 的第一列的名称index 字段 与列数对应索引converter 字段转换器
@Exellgnore : 如果实体类中存在的字段,不希望写入到excel 或者,不想和 excel 去匹配,就加上这个字段;
@DateTimeFormat : 日期的格式化("yyyy-MM-DD hh-mm-ss") ;value 格式化字符模板roundingMode 取舍方式
@ExcellgnoreUnannotated : 默认不加 @ExcellgnoreUnannotated 的注解都会参与读写,加了不会参与;
@ColumnWidth : 设置字段的单元格宽度value : 宽度数值
@ContentRowHeight: 设置字段单元格的高度value: 高度数值
@HeadRowHeight : 设置头高value : 头高数值
常用API
初始化 Excel 读取对象(ExcelReaderBuilder)方法:
ExcelReaderBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelReader),Sheet构造对象(ExcelReaderSheetBuilder):
ExcelReaderBuilder 属性的注入方法:
获取Excel读取对象(ExcelReader),Sheet构造对象(ExcelReaderSheetBuilder):
快捷使用EasyExcel:
初始化获取Excel写出构造对象(ExcelWriterBuilder):
ExcelWriterBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelWriter),Sheet构造对象(ExcelWriterSheetBuilder):
各对象私有方法:
SpringBoot 中对excel文件的读写:
监听器: 用来读 excel 默认一行一行读!
AnalysisEventListener 这里是可以加泛型的用来提示excel的列对应的实体类!
这里不加,是因为,我遇到的项目是要分析excel的数据,没办法确定要读的excel的列有什么,有几条!
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** 为了能统一解析,任何形式(不确定 excel 中有多少内容!)的 excel 文件 所以没有加 泛型!* 这里封装着解析的细节!*/
public class EasyExcelListener extends AnalysisEventListener {/*** 存储所有解析到的数据!*/public List<Map<String,Object>> data = new ArrayList<>();/*** 读的时候会用监听器,自动调用这个方法读出一行数据!* Object 读取一行信息把内容封装成Object对象*/@Overridepublic void invoke(Object object, AnalysisContext context) {/*** 强转,读到的数据!* 读到的每一行,代表一个 pair(Key,Value) ;*/Map<String,Object> stringList= (Map) object;// 调试打印!System.out.println(stringList);/*** 存储读到的内容到 list中!*/data.add(stringList);}/*** 获取到每一行 要做点业务逻辑!* 比如把数据放到数据库里!* @param string*/private void doSomething(Map<String,Object> string) {}/*** 文件解析完成后!* 要做些什么!* 比如 删除缓存!* @param context*/public void doAfterAllAnalysed(AnalysisContext context) {// data.clear(); 比如删除不用的资源!}/*** 从监听器里面获取 解析出来的数据!* @return*/public List<Map<String,Object>> getData() { return data; }/*** 设置监听器内部的数据!* @param data*/public void setData(List<Map<String,Object>> data) { this.data = data; }
}
工具类 用于读取excel:
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.example.easyexcel.listener.EasyExcelListener;import java.io.*;
import java.util.List;
import java.util.Map;public class ExcelRead {/*** 用一个文件,拿到它的输入流!* @param fileName* @return*/private static InputStream getInputStream(String fileName) {try {return new FileInputStream(new File(fileName));} catch (FileNotFoundException e) {e.printStackTrace();}return null;}public static Object testRead() {// 这里模拟从网上获取到一个excel文件InputStream inputStream = getInputStream("d:/zdz.xlsx");try {/*** 创建一个自己写的监听器*/EasyExcelListener listener = new EasyExcelListener();/*** 调用 EasyExcel 的api* 从 流中 读数据!*/ExcelReaderBuilder read = EasyExcel.read(inputStream, null, listener);/*** 默认读取 第一个 sheet();*/read.sheet().doRead();/*** 获取监听器的解析结果!*/List<Map<String,Object>> datas = listener.getData();/*** 删除解析结果中的头部 即 只想要数据部分 ,* 当然也可以不用删除!*/datas.remove(0);return datas;} catch (Exception e) {e.printStackTrace();return null;} finally {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}
}
controller 层内容
import com.example.easyexcel.util.ExcelRead;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class ExcelController {@RequestMapping("/ExcelWriter")@ResponseBody // 恒不跳转,以json格式显示在浏览器上public Object ExcelWriter(){Object lists = ExcelRead.testRead();if(lists != null){System.out.println("成功!");}else{System.out.println("异常");}return lists;}
}
用postman 或者 浏览器 访问即可验证结果!
EasyExcel - API相关推荐
- easyExcel 复杂表头 动态表头
需求: 要根据数据来导出这个excel 左侧菜单有一百多个固定菜单,这些肯定不能放到数据库里建字段,所以就根据上面的抽检总点数,合格总点数,合格率三个字段建立数据库字段. 技术实现: 我们选择的是ea ...
- 简洁、快速、节约内存的Excel处理工具EasyExcel
欢迎光临我的博客查看最新文章: https://river106.cn 1.简介 EasyExcel是一个基于Java的.快速.简洁.解决大文件内存溢出的Excel处理工具. 他能让你在不用考虑 ...
- EasyExcel复杂excel导入
EasyExcel复杂excel导入 easyexcel官方都是一些简单的导入到处示例,复杂的excel文档导入,还得自己去慢慢琢磨.百度.思考.总结.学习.观察. 代码地址在文档的最后,如果你也遇到 ...
- POIExcel--狂神
POI & easyExcel 概念介绍 POI 操作 1) 写 2) 读 EasyExcel 1) 写 2)读 感谢狂神的分享:B站视频地址 概念介绍 POI Apache POI 官网:h ...
- EasyExcel操作API与示例
1. maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel< ...
- easy excel date 类型解析报错_Excel神具EasyExcel,常见API
一.前言 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但P ...
- easyexcel生成excel_阿里JAVA解析Excel工具easyexcel
java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有 ...
- easyexcel 设置标题_EasyExcel,让 excel 导入导出更加简单
做积极的人,而不是积极废人! 来源:jianshu.com/p/8f3defdc76d4EasyExcelGitHub上的官方说明快速开始maven仓库地址导入导出总结 EasyExcel 在做exc ...
- 在springboot中使用easyexcel导出数据excel表格
第一步: 在pom.xml中添加easyexcel依赖 之前测试一些低版本会出现一些问题,所以在这里使用了2.1.6的版本. <dependency><groupId>com. ...
最新文章
- java 协程 实现 Akka
- 重新启动C++Builder
- java 学习(一)冒泡排序
- Open/Close Port in Centos
- 开源WPF控件库MaterialDesignInXAML推荐
- python数据分析numpy_(转)Python数据分析之numpy学习
- mysql之事件的开启和调用
- 格力发布公告称双11期间让利30亿元打击低质伪劣产品
- 实现基于AD的MOSS的FORM认证方式
- Jackson 格式化日期问题
- html css字体最小,html-字体大小CSS问题
- 注册测绘师 案例分析
- darknet yolov3 yolov4转caffe 教程
- Linux下G++编译
- 命令行安装卸载驱动服务
- 计算机在室内设计的应用,计算机辅助设计软件在室内设计教学中的应用
- 关于Arcgis中的裁剪说明
- (转载)纳豆的家庭制作、保存和食用
- Win7电脑开机无法进入系统的解决方法
- dos命令界面输入java -version没显示结果