forked from wangguanquan/eec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
403 lines (346 loc) · 16.2 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
Version 0.5.21 (2024-12-24)
-------------
- 提升Excel转CSV时对时间类型的兼容性(#409)
- Excel转CSV时保持Excel中的空行位置
- 提升添加批注的便利性并开放批注的字体属性
- 模板导出支持File和Buffer图片类型
- 修复CSVSheet默认分割符设置为0x0的过失问题
- 修复导出批注数量超过57344时抛异常的BUG(#404)
- Converter方法增强,入参由String改为Row和Cell方便扩展(#405)
Version 0.5.20 (2024-11-13)
-------------
- 新增SimpleSheet简单工作表,简化导出的数据格式
- CSVSheetWriter新增分隔符delimiter属性
- 提升OpenJDK8-21的兼容性
Version 0.5.19 (2024-09-22)
-------------
- Workbook支持增加自定义属性
- Workbook支持设置"只读"标识,设置只读后打开Excel后无法编辑
- 删除部分已标记为过时的方法
Version 0.5.18 (2024-08-13)
-------------
- 增加CSVSheet的兼容性, Excel转CSV支持保存BOM
- 增加ResultSetSheet的类型兼容性
- ListMapSheet支持泛型
- 删除I18N相关代码降低复杂度
- 精简BloomFilter降低复杂度,精简后仅支持String类型
Version 0.5.17 (2024-07-18)
-------------
- 修复部分情况下Row#toMap抛下标越界问题(#380)
Version 0.5.16 (2024-06-29)
-------------
- 输入转换Converter#reversion增加数据类型提升扩展性(#376)
- 修复读取自定义theme颜色会出现偏差的问题
Version 0.5.15 (2024-05-21)
-------------
- 修复onProgress出现越界问题
- 修复data-supplier计算offset出现偏差使得导出数据缺失的问题
- 删除部分已标记为过时的方法
Version 0.5.14 (2024-04-22)
-------------
- 新增数据验证Validation
- 新增超链接注解Hyperlink
- 新增模板工作表TemplateSheet
- 新增TypeCastException用于Row转对象时如果出现类型转换异常时携带行列等信息
- ListSheet新增data-supplier减化分片开发难度
- 新增zoomScale扩展属性支持设置工作表缩放比例
- 修复读取双色填充样式时抛异常
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. 修复空行(不含任何元素的行<row/>)读取错位的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. 修复空单元格(不含任何元素的单元格,相当于<c/>)读取位置错误的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.