一、前言

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便。

下面我们来简单学习一下EasyExcel的常用API。


二、关于常见类解析

  • EasyExcel 入口类,用于构建开始各种操作
  • ExcelReaderBuilder ExcelWriterBuilder 构建出一个 ReadWorkbook WriteWorkbook,可以理解成一个excel对象,一个excel只要构建一个
  • ExcelReaderSheetBuilder ExcelWriterSheetBuilder 构建出一个 ReadSheet WriteSheet对象,可以理解成excel里面的一页,每一页都要构建一个
  • ReadListener 在每一行读取完毕后都会调用ReadListener来处理数据
  • WriteHandler 在每一个操作包括创建单元格、创建表格等都会调用WriteHandler来处理数据
  • 所有配置都是继承的,Workbook的配置会被Sheet继承,所以在用EasyExcel设置参数的时候,在EasyExcel...sheet()方法之前作用域是整个sheet,之后针对单个sheet

三、读

(1)注解

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

(2)参数

通用参数

ReadWorkbook,ReadSheet 都会有的参数,如果为空,默认使用上级。

  • converter 转换器,默认加载了很多转换器。也可以自定义。
  • readListener 监听器,在读取数据的过程中会不断的调用监听器。
  • headRowNumber 需要读的表格有几行头数据。默认有一行头,也就是认为第二行开始起为数据。
  • head 与clazz二选一。读取文件头对应的列表,会根据列表匹配数据,建议使用class。
  • clazz 与head二选一。读取文件的头对应的class,也可以使用注解。如果两个都不指定,则会读取全部数据。
  • autoTrim 字符串、表头等数据自动trim
  • password 读的时候是否需要使用密码

ReadWorkbook(理解成excel对象)参数

  • excelType 当前excel的类型 默认会自动判断
  • inputStream 与file二选一。读取文件的流,如果接收到的是流就只用,不用流建议使用file参数。因为使用了inputStream easyexcel会帮忙创建临时文件,最终还是file
  • file 与inputStream二选一。读取文件的文件。
  • autoCloseStream 自动关闭流。
  • readCache 默认小于5M用 内存,超过5M会使用 EhCache,这里不建议使用这个参数。
  • useDefaultListener @since 2.1.4 默认会加入ModelBuildEventListener 来帮忙转换成传入class的对象,设置成false后将不会协助转换对象,自定义的监听器会接收到Map对象,如果还想继续接听到class对象,请调用readListener方法,加入自定义的beforeListener、 ModelBuildEventListener、 自定义的afterListener即可。

ReadSheet(就是excel的一个Sheet)参数

  • sheetNo 需要读取Sheet的编码,建议使用这个来指定读取哪个Sheet
  • sheetName 根据名字去匹配Sheet,excel 2003不支持根据名字去匹配

四、写

(1)注解

  • ExcelProperty index 指定写到第几列,默认根据成员变量排序。value指定写入的名称,默认成员变量的名字,多个value可以参照快速开始中的复杂头
  • ExcelIgnore 默认所有字段都会写入excel,这个注解会忽略这个字段
  • DateTimeFormat 日期转换,将Date写到excel会调用这个注解。里面的value参照java.text.SimpleDateFormat
  • NumberFormat 数字转换,用Number写excel会调用这个注解。里面的value参照java.text.DecimalFormat
  • ExcelIgnoreUnannotated 默认不加ExcelProperty 的注解的都会参与读写,加了不会参与

(2)参数

通用参数

WriteWorkbook,WriteSheet ,WriteTable都会有的参数,如果为空,默认使用上级。

  • converter 转换器,默认加载了很多转换器。也可以自定义。
  • writeHandler 写的处理器。可以实现WorkbookWriteHandler,SheetWriteHandler,RowWriteHandler,CellWriteHandler,在写入excel的不同阶段会调用
  • relativeHeadRowIndex 距离多少行后开始。也就是开头空几行
  • needHead 是否导出头
  • head 与clazz二选一。写入文件的头列表,建议使用class。
  • clazz 与head二选一。写入文件的头对应的class,也可以使用注解。
  • autoTrim 字符串、表头等数据自动trim

WriteWorkbook(理解成excel对象)参数

  • excelType 当前excel的类型 默认xlsx
  • outputStream 与file二选一。写入文件的流
  • file 与outputStream二选一。写入的文件
  • templateInputStream 模板的文件流
  • templateFile 模板文件
  • autoCloseStream 自动关闭流。
  • password 写的时候是否需要使用密码
  • useDefaultStyle 写的时候是否是使用默认头

WriteSheet(就是excel的一个Sheet)参数

  • sheetNo 需要写入的编码。默认0
  • sheetName 需要些的Sheet名称,默认同sheetNo

WriteTable(就把excel的一个Sheet,一块区域看一个table)参数

  • tableNo 需要写入的编码。默认0

五、参考地址

https://www.yuque.com/easyexcel/doc/api

EasyExcel

easy excel date 类型解析报错_Excel神具EasyExcel,常见API相关推荐

  1. easy excel date 类型解析报错_Python成为专业人士笔记-date 对象、time 对象及datetime用法深度剖析...

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 将字符串解析为对应时区的datetime对象 ...

  2. easy excel date 类型解析报错_实例1:用Python自动批量生成Excel档物料标签

    作为一个生产型企业,其产品种类繁多.按照客户要求,每种产品在出货时都需要在包装上贴上如下信息标签,以便识别. 标签上需要包含6种信息,原始资料内容如下: 我们注意到原始信息中的品牌,有些是大写,有些是 ...

  3. easy excel date 类型解析报错_ptarchiver原理解析

    pt-archiver原理解析 作为MySQL DBA,可以说应该没有不知道pt-archiver了,作为pt-toolkit套件中的重要成员,往往能够轻松帮助DBA解决数据归档的问题.例如线上一个流 ...

  4. easy excel date 类型解析报错_【今日真题】鼓楼小学教师招聘2017年考试真题及答案解析(上)...

    点击上方关注我们! 1:教学内容的安排既要有系统性和连贯性,同时又要保持一定的难度和速度,并注意新旧知识的联系,这主要体现( )的要求.单项选择题A.循序渐进和促进发展相结合B.集体教学和因材施教相结 ...

  5. easy excel date 类型解析报错_11.MySQL数据类型

    1.数字类型 1)整数类型 无符号数据类型:使用UNSIGNED关键字修饰. 示例: "INT"有符号NT类型: "INT UNSIGNED"无符号NT类型. ...

  6. easy excel date 类型解析报错_9 个绝对用得上的excel日期公式,赶紧拿走!

    哈喽,大家好!关于excel中的日期问题,是很多exceler都绕不开的话题,比如计算当月的工作日天数,当前日期是一年中的第几天.第几周等等,面对这些问题,估计不少小伙伴可能都会反应不过来,想着应该用 ...

  7. easy excel date 类型解析报错_两个日期相差多少天,你还在一天天的数吗?用Excel轻松完成计算...

    在我们的日常工作中,经常要计算两个日期之间相差多少天,两个时间之间相差多少小时等等,诸如此类的日期.时间之差怎么计算呢?今天小编就和大家分享如何利用Excel函数来完成计算. 一.计算年数.月数.天数 ...

  8. esaypoi导出excel后office打开报错

    ** esaypoi导出excel后office打开报错 ** 使用esaypoi导出excel后office打开报错,提示 "Excel 无法打开文件"导出表格 (1).xlsx ...

  9. 字符串类型日期时间转换为Date类型解析转换异常java.text.ParseException: Unparseable date: “2019-09-27T18:31:31+08:00”

    字符串类型日期时间转换为Date类型解析转换异常java.text.ParseException: Unparseable date: "2019-09-27T18:31:31+08:00& ...

最新文章

  1. 10款在线格式转化应用
  2. 牛客华为机试第5题python
  3. 全球及中国新鲜芒果制品市场投资份额与营销渠道分析报告2022版
  4. 雷林鹏分享:PHP 数组
  5. 逻辑回归还能这样解?关于Kernel Logistic Regression的详细解释
  6. ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平台ABAP环境的试用版了
  7. 如果你没有时间读书,至少要保留这个习惯
  8. Django实战1-权限管理功能实现-01:搭建开发环境
  9. VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
  10. 微软发布新品被指剽窃!交涉无果,两年开源项目被迫终结
  11. 163 邮件 服务器 ssl,为什么用163的smtp服务时要关闭TLS才能发送邮件?
  12. 论文趣读:人工智能里程碑?回顾2015年登上Nature的DQN(全文翻译+批注)
  13. 《长安十二时辰》利用大数据破案?
  14. ASCSDK-------通用包接入文档(COCOS篇)
  15. c语言一维数组程序题,C语言程序设计 练习题参考答案 第四章 一维数组
  16. 《那些年啊,那些事——一个程序员的奋斗史》十一
  17. 什么软件能测试太阳光照周期,你做的是UV测试,还是太阳光照测试?
  18. 基于Vue的数据埋点统计
  19. 一文看懂人工智能芯片的产业生态及竞争格局
  20. w13scan 扫描器的安装及应用

热门文章

  1. 制作unity大世界场景编辑的一点心得和注意事项(场景地编)
  2. canvas圆球碰撞检测
  3. HBuilderX自定义编辑器代码颜色
  4. 第一个项目:字符画神器——全程制作历程
  5. 手机摄像模组基本知识
  6. C语言scanf注意点
  7. Button字体大写
  8. 如何才能成为一名合格的web前端开发工程师
  9. 关于职场的经典视频链接
  10. 什么是Web Service:/什么是Web服务