加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CHANGELOG 14.20 KB
一键复制 编辑 原始数据 按行查看 历史
wangguanquan 提交于 2024-02-20 20:00 . v0.5.13
Version 0.5.13 (2024-02-20)
-------------
- logback安全更新
- 新增全属性工作表FullSheet以读取更多属性,它集合了MergeSheet和CalcSheet的功能
- 新增扩展属性AutoFilter用于添加列筛选功能
- 修复继承自ListSheet的工作表初始无法获取对象类型导致单元格空白的问题
- 修复部分场景下边框颜色无法设置的问题
- 修复部分Excel的indexed颜色与标准有所不同导致获取颜色不正确的问题
- 修复部分场景读取Excel发生IndexOutOfBound异常
- 修复HeaderStyle注解设置样式时,字段样式被全局样式替换的问题
Version 0.5.12 (2023-11-26)
-------------
- 移除watch改用slf4j输出日志
- 新增进度窗口`onProgress`
- 优化自适应列宽算法使其支持更多字体和大小
- 数据转换器功能增强,ExcelColumn增加converter属性以支持导出/导入时双向数据转换(#362)
- 支持读取xlsx格式wps的内嵌图片(#363)
- 部分类的注释改为中文,后续会将全部注释改为中文
Version 0.5.11 (2023-10-08)
-------------
- 优化ExcelReader性能,性能提升100%~300%
- 增加`setHeaderColumnReadOption`方法提高ExcelReader丰富性
- 修复读取16进制转义字符时出现乱码问题
- 修复非法UTF8字符导致写文件异常
- 无数据且能获取表头信息时正常写表头(#361)
- 屏蔽JDK17以上版本使用ExcelReader抛异常的问题
Version 0.5.10 (2023-08-20)
-------------
- 修复单元格长度过长导致内容错位的异常(#354)
- 支持导出图片
Version 0.5.9 (2023-05-10)
-------------
- 修复dom4j默认构造器容易造成XXE安全漏洞
Version 0.5.8 (2023-04-08)
-------------
- 删除部分已标记为过时的方法和类,兼容处理请查看wiki
1. 删除Sheet.Column类
2. 删除Row#getRowNumber方法
3. 删除IntConversionProcessor类
- 重命名xxOddFill为xxZebraLine
- 修复自动分页后打开文件弹出警告
- 取消默认斑马线,增加XMLZebraLineCellValueAndStyle自定义斑马线
- 表头背景从666699调整为E9EAEC,斑马线颜色从EFF5EB调整为E9EAEC
- 单个Column可以指定auto-size属性(#337)
- 提供入口自定义处理未知的数据类型
- 导出数据支持指定起始行号(#345)
- 修复xls解析RK Value丢失精度问题
- 修复部分已知BUG(#334, #342, #346)
Version 0.5.7 (2023-02-17)
-------------
- 修复读取font-size时因为浮点数造成异常
- 修复auto-size重置列宽时抛Buffer异常
- 新增 #setRowHeight, #setHeaderRowHeight 方法设置行高
Version 0.5.6 (2023-01-07)
-------------
- 读取文件时支持指定表头,对于多行表头尤为有效
- 提供Row#toMap方法将行数据转为LinkedHashMap(#294)
- 提供Row#isBlank方法用于判断所有单元格的值是否为空(#314)
- 读取文件转时支持自定义HeaderRow
- 读文件时支持获取单元格样式
- 修复部分BUG(#308, #320, #323)
Version 0.5.5 (2022-11-07)
-------------
- Row转对象时如果出异常将提示具体的行和列信息(#284)
- 导出结束后删除zip包(#296)
- 修复部分BUG(#297,#298)
Version 0.5.4 (2022-08-28)
-------------
- 支持显示/隐藏网络线
- 支持显示/隐藏指定列
- 字体增加"删除线"样式
- Comment增加width和height两属性,用于调整批注大小
- BIFF8Sheet支持reset重置流用于反复读取
- 修复部分BUG(#282,#285)
Version 0.5.3 (2022-07-25)
-------------
- 修复导出时日期少6天的问题(#269)
- 支持多个ExcelColumn注解,可以实现多行表头(#210)
- 微调表格样式使其更突出内容
- 优化自动计算列宽的算法使其更精准
- 修复部分BUG(#264,#265)
Version 0.5.2 (2022-07-16)
-------------
- (严重)修复大量单元格字节超过1k时导致SST索引读取死循环问题(#258)
- StatementSheet&ResultSetSheet添加StyleProcessor实现整行样式调整(#235)
- 修复部分BUG(#257, #260)
Version 0.5.1 (2022-07-10)
-------------
- 提升对非标准Office OpenXML生成的excel读取兼容性(#245, #247)
- 提升读取Excel时Row转Java对象的兼容性(#254)
- 修复部分BUG(#249, #252)
Version 0.5.0 (2022-05-22)
-------------
- 增加StyleDesign用于样式处理(单元格或者整行样式处理)
- 增加FreezePanes用于冻结网格
- 修改部分BUG(#227,#232,#238,#243)
- 读取文件支持自定义注解转对象(#237)
Version 0.4.14 (2021-12-19)
-------------
- 提高对Numbers转xlsx的兼容性
- 值转换从原来的int类型扩大为Object
- 增加@RowNum注解,用于注入行号
- 修改ListSheet.EntryColumn的访问权限,方便实现更多高级特性
- 支持单列数字无表头导出,现在可以简单的导出`List<String>`数据
- 修复已知BUG(#197,#202,#205,#219)
- 将com.google.common包重命名为org.ttzero.excel.common解决内嵌引起的包冲突(#200)
Version 0.4.13 (2021-08-09)
-------------
- 支持xls获取图片
- `@ExcelColumn`注解增加`colIndex`属性,用于指定列顺序(#188)
- 读取文件时`Worksheet#getIndex()`返回Sheet在文件中的下标而非id,并取消按id排序(#193)
- 修复部分BUG(#182,#190)
Version 0.4.12.1 (2021-05-20)
-------------
- Hotfix:HeaderStyle注解设置某列cell颜色会影响所有表头样式
Version 0.4.12 (2021-05-18)
-------------
- 增加获取图片功能(#168)
- 支持row()方法转对象(#175)
- 读取文件默认使用包装类而非基本类型,为了方便处理Null类型(#177)
- 增加`@HeaderStyle`注解自定义头部样式,本次仅引入颜色的定制,后续将提供更丰富的样式支持
Version 0.4.11 (2021-03-28)
-------------
- 修复导出时删除特殊字符的问题
- 增加wrapText属性控制单元格自动换行
- 增加forceExport属性来强制没有@ExcelColumn注解的属性
Version 0.4.11 (2021-01-15) *eec-e3-support* only
-------------
1. 兼容非标准化BOF记录解析
2. 优化short-sector解析
3. 极大提升读取xls兼容性(兼容某些版本所有数据都写在short-sector中的处理;提升大文件CONTINUE块解析的容错性;提升某些版本没有short-sector的容错性)
4. 增加对EXTSST的解析
Version 0.4.10 (2021-01-07)
-------------
1. 增加兼容性(Office for Mac)
2. 修复部分BUG(#147,#148,#159,#161)
Version 0.4.9 (2020-11-15)
-------------
1. 修复读取文件时的BUG(#146)
2. 增加读取高版本Office导出的xls文件格式的兼容性
Version 0.4.8 (2020-10-09)
-------------
1. ExcelColumn注解增加format属性来支持自定义单元格格式化
2. 为减少数据泄露风险,现在对象属性必须明确指定ExcelColumn注解才会被导出
Version 0.4.7 (2020-08-14)
-------------
1. 安全更新,修复dom4j小于2.1.3版本可能启用XXE攻击。
2. ExcelColumn注解增加comment属性,允许在Excel列头添加“批注”功能
3. 修复一些已知BUG
Version 0.4.6 (2020-04-20)
-------------
1. 什么也没做,0.4.4版本发布异常
Version 0.4.4 (2020-04-20)
-------------
1. 优化SharedStringTable
2. 支持读取Excel97~2003文件(需要依懒eec-e3-support)
3. 修复一些已知BUG
Version 0.4.3 (2020-03-19)
-------------
1. 修复读取科学计数转数字类型时抛NumberFormatException异常
2. 修复读取SharedString单字符串时内容错乱的BUG
3. 解决读取java.sql.Time和java.time.LocalTime类型时导致UncheckedTypeException异常
4. 解决打开EEC导出的空Worksheet时会弹出警告信息
5. 缩小堆内存使用(最小6MB)
Version 0.4.2 (2020-03-04)
-------------
1. 修复读取poi生成的excel文件内容转对象时值为空的异常
2. 修复读取某些空worksheet时抛IllegalArgumentException异常
3. 使用slf4j统一日志接口,不强制用户使用log4j
4. 字符串值默认使用inlineStr方式而非SharedString里从而提升一些写入速度
5. 调整压缩等级提升一些压缩速度,最终文件比以前有所增加
Version 0.4.1 (2020-03-03)
-------------
1. 修复ListObject导出文件时数据比实际数据少的BUG
2. 修复ExcelColumn注解只有`share`属性时share值无效的BUG
Version 0.4.0 (2020-02-24)
-------------
1. Worksheet增加`getDimension`方法返回单元格范围,替换原`getSize`方法
2. 支持获取单元格公式
3. 修复SNAPSHOT版导出excel文件无法正常打开的错误
4. ExcelReader增加打开模式,可以指定读取单元格公式或者`合并单元格`的值。
Version 0.3.6 (2019-11-21)
-------------
1. Hotfix读取空单元格时可能抛NPE异常
Version 0.3.5 (2019-11-20)
-------------
1. 修复读取空单元格时抛数组越界异常
Version 0.3.4 (2019-10-21)
-------------
1. 支持CSV <=> Excel 格式互转
2. 支持通过列名(非空列第一行)获取数据
Version 0.3.3 (2019-08-14)
-------------
1. 修复导出null值时丢失样式
2. 修复导出空格时打开文件提示错误
3. 修复excel03加载包错误
Version 0.3.2 (2019-06-19)
-------------
1. 读取Excel时可以获取单元格数据类型
2. 支持Worksheet重复读取(通过sheet#reset方法实现)
3. 修复已知BUG
4. 修改注释准备发版到Maven中心仓库
5. Rename package (cn.ttzero -> org.ttzero)
Version 0.3.1 (2019-05-21)
-------------
1. SharedStringTable升级
2. 模板导出更新以兼容Excel97~03
3. 修改SQL别名导出表头文字错误的BUG
4. AutoSize方法升级,现在AutoSize并不需要借助临时文件
5. 当BloomFilter满时不扩容而进行清空
Version 0.3.0 (2019-05-01)
-------------
1. 写入Excel进行重构以提升扩展能力,现在支持自定义数据源worksheet
2. 对Excel 97~03写入兼容支持,eec-e3-support还在开发当中
3. 支持自定义WorkbookWriter或WorksheetWriter以满足个性化需求,
比如修改每个worksheet最大行数
4. 修复一些已知BUG
5. SharedStringTable引入Google BloomFilter
Version 0.2.9 (2019-02-22)
-------------
1. Excel读取时增加文件格式判断(BIFF 8 or Open xml)
2. 创建者未指定时默认取当前操作系统登录名
3. 增加 Apache License Version 2.0
4. Rename package (net.cua->cn.ttzero)
访问[ttzero](https://www.ttzero.cn)可以了解更多关于eec的信息(网站还处于建设中)
5. ExcelReader增加返回Excel文件基本信息
6. ExcelReader增加BIFF8(Excel97~2003)classpath加载
Version 0.2.8 (2018-11-26)
-------------
1. 对象数组导出时包装类报类型转换错误bug
2. 对象数组导出类型为java.util.date时类型转换错误
3. ExcelReader开放cacheSize和hotSize两个参数,用户可以根据实际情况重置参数以减少文件读取次数,以空间换取时间提高读取速度
4. 暂时取消setConnection方法的过时标记
5. 修改超过676列时Export会出现位置错误的BUG
6. 修改列数据过多时Reader出现死循环的BUG
7. 修改读取apache poi生成的Excel文件时转义字符未进行非转义(inlineStr类型)的BUG
Version 0.2.7 (2018-11-19)
-------------
1. sharedString保留一个顺序流句柄以减少读文件次数
2. Sheet增加isHidden, isShow方法,读取Excel时可以通过Filter过滤掉隐藏或显示的worksheet
`reader.sheets().filter(Sheet::isShow).flatMap(Sheet::rows).forEach(System.out::println)`
3. BigDecimal类型支持
4. LocalDate,LocalDateTime,LocalTime,java.sql.Time类型支持
5. 增加读写转义(跳过不可见字符ASCII 0~31)
6. setConnection方法被标记过时,将在0.3.x版本中删删除。传入一个数据库连接是一种不安全行为,
第三方可能利用此连接做其它非法的数据库操作
Version 0.2.5 (2018-11-07)
-------------
1. ExcelReader添加热词区,提高大文件查找性能。
2. sharedString读取由原来的SAX方式改为BufferedReader方式,在不改变切割区块大小的情况下性能提升5倍以上。
3. 修复取消隔行变色无效的BUG
4. 添加Sheet时可以不指定名称,默认Sheet名为"Sheet1.2.3..."
Version 0.2.3 (2018-10-18)
-------------
1. 修复空行(不含任何元素的行&lt;row/&gt;)读取错位的BUG
2. 修改空Sheet页读取失败的BUG
3. 读Sheet增加`dataIterator`用以遍历有数据的行
4. 读Sheet增加`bind`方法来预先绑定对象类型,使用`Row.get()`方法获得实例,使用`Row.geet()`方法获得共享实例对象
5. 修改分页时某些属性遗漏的BUG
6. 读取excel时如果要跳过某些列可以使用NotImport注解
Version 0.2.1 (2018-10-08)
-------------
1. 增加隔行变色(默认),可使用cancelOddFill取消变色,也可使用setOddFill设置填充。
2. 修复单元格包含回车符导致读取错位的bug
3. 修复空单元格(不含任何元素的单元格,相当于&lt;c/&gt;)读取位置错误的BUG
4. Workbook添加Watch监听Excel生成过程
5. I18N
Version 0.2.0 (2018-09-30)
-------------
Add ExcelReader
一个流式操作链,游标只会向前,所以不能反复操作同一个流。
同一个Sheet页内部Row对象是内存共享的,所以不要直接将Stream<Row>转为集合类,
如果要转为集合类可以使用Row对象内部的to方法`row -> row.to(class)`转为指定类型对象。
to方法会将每行数据实例化。
Row对象内部还包含一个too方法,用法与to方法一样,唯一区别是too方法返回的对象是内存共享的内存中只有一个实例,
对于不需要转集合类,内存共享是一个好主意。
> 测试前请创建一个名为Student&Teacher.xlsx的文件,然后建两个Sheet页分别为Student和Teacher,然后添写测试内容(列表)
```
// 读取Student&Teacher.xlsx并且输出每个Sheet页的数据
ExcelReader.read(Paths.get("Student&Teacher.xlsx")).sheets().flatMap(Sheet::rows).forEach(System.out::println);
// 读取Student&Teacher.xlsx的Student页并且转为对象数组
Student[] students = ExcelReader.read(Paths.get("Student&Teacher.xlsx"))
.sheet("Student")
.dataRows() // 不包含所有空行(不含有任何数据和样式)和第一行数据
.map(row -> row.to(Student.class))
.toArray(Student[]::new);
// 读取Student&Teacher.xlsx的Teacher页并且找出所有数学教师并保存数据库
ExcelReader.read(Paths.get("Student&Teacher.xlsx"))
.sheet("Teacher")
.dataRows()
.map(row -> row.too(Teacher.class)) // 这里插库动作是one by one的操作,所以使用too共享对象比较好。
.filter(t -> "math".equals(t.getTeach()))
.forEach(this::save);
```
开发过程中你应该使用try-with-resource或手动关闭ExcelReader。
Version 0.1.0
-------------
Initial release of excel export.
Support export data from database to xlsx file.
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化