forked from wangguanquan/eec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
237 lines (202 loc) · 9.96 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
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.