紧急修复以绝对路径指定模板来导出会导致模板被修改的BUG,以及读取Excel数据会修改原Excel文件,建议升级至2.1.4-Final2及以上版本
一. 更新记录
1. v3.x
- 新增CSV(包含基于ExcelField注解)的导出支持
- 新增CSV(包含基于ExcelField注解)的导入支持
2. v2.x
- Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String
- Excel支持非注解读取Excel内容了,内容存于
List<List<String>>对象内 - 现在支持
List<List<String>>导出Excel了(可以不基于模板) - Excel新增了Map数据样式映射功能(模板可为每个key设置一个样式,定义为:&key, 导出Map数据的样式将与key值映射)
- 新增读取Excel数据转换器接口
com.github.converter.ReadConvertible - 新增写入Excel数据转换器接口
com.github.converter.WriteConvertible - 支持多sheet一键导出,多sheet导出封装Wrapper详见
com.github.sheet.wrapper包内包装类 - 修复以绝对路径指定模板来导出会导致模板被修改的BUG,以及读取Excel数据会修改原Excel文件,建议升级至2.1.4-Final2版本
- 修复已知bug及代码与注释优化
二. 基于注解(/src/test/java/modules/Student2.java)
|
三. 读取Excel快速实现
1.待读取Excel(截图)

2. 读取转换器(/src/test/java/converter/Student2ExpelConverter.java)
/** |
3. 读取函数(/src/test/java/base/Excel2Module.java#excel2Object2)
|
4. 读取结果
读取Excel至String数组: |
四. 导出Excel
1. 不基于模板快速导出
1) 导出函数(/src/test/java/base/Module2Excel.java#testList2Excel)
|
2) 导出效果(截图)

2. 带有写入转换器函数的导出
1) 转换器(/src/test/java/converter/Student2DateConverter.java)
/** |
2)导出函数(/src/test/java/base/Module2Excel.java#testWriteConverter)
// 验证日期转换函数 Student2DateConverter |
3) 导出效果(截图)

3. 基于模板List<Oject>导出
1) 导出函数(/src/test/java/base/Module2Excel.java#testObject2Excel)
|
2) 导出模板(截图)

3) 基于模板导出结果(截图)

4) 不基于模板导出结果(截图)

4. 基于模板Map<String, Collection<Object.toString>>导出
1) 导出函数(/src/test/java/base/Module2Excel.java#testMap2Excel)
|
2) 导出模板(截图)

3) 导出结果(截图)

五. Excel模板自定义属性,不区分大小写
1) 具体代码定义详见(/src/main/java/com/github/crab2died/handler/HandlerConstant)
2) Excel模板自定义属性,不区分大小写
| 定义符 | 描述 | 优先级(大到小) |
|---|---|---|
| $appoint_line_style | 当前行样式 | 3 |
| $single_line_style | 单行样式 | 2 |
| $double_line_style | 双行样式 | 2 |
| $default_style | 默认样式 | 1 |
| $data_index | 数据插入的起始位置 | - |
| $serial_number | 插入序号标记 | - |
六. 多sheet数据导出
1. 多sheet数据导出包装类,详见com.github.sheet.wrapper包内包装类
多sheet数据导出只需将待导出数据封装入com.github.sheet.wrapper包内的Wrapper类即可实现多sheet一键导出
2. 无模板、无注解的多sheet导出com.github.sheet.wrapper.SimpleSheetWrapper
1) 调用方法
// 多sheet无模板、无注解导出 |
2) 导出结果(截图)

3. 无模板、基于注解的多sheet导出com.github.sheet.wrapper.NoTemplateSheetWrapper
1) 调用方法
// 多sheet无模板、基于注解的导出 |
2) 导出结果(截图)

4. 基于模板、注解的多sheet导出com.github.sheet.wrapper.NormalSheetWrapper
1) 调用方法(注:为了测试方便,各个sheet数据相同)
// 基于模板、注解的多sheet导出 |
2) 导出模板(截图) (注:为了测试方便,模板样式大致相同,单元格颜色有区别)
- sheet1模板

- sheet2模板

3) 导出结果(截图)
- sheet1导出结果

- sheet2导出结果

5. 形如Map<String, Collection<Object.toString>>数据基于模板、注解的多sheet导出com.github.sheet.wrapper.MapSheetWrapper
1) 调用方法(注:为了测试方便,各个sheet数据相同)
// Map数据的多sheet导出 |
2) 导出模板(截图) (注:为了测试方便,模板样式大致相同,单元格颜色有区别)
- sheet1模板

- sheet2模板

3) 导出结果(截图)
- sheet1导出结果

- sheet2导出结果

七. CSV文件的操作(完全支持ExcelField注解的所有配置)
1. 基于注解读取CSV文件
1) 调用方法
// 测试读取CSV文件 |
2) 读取结果
Student2{id=1000001, name='张三', date=Wed Nov 28 15:11:12 CST 2018, classes=1, expel='false'} |
2. 基于注解导出CSV文件
1) 调用方法
// 导出csv |
2) 导出结果
// 以下为导出CSV文件内容 |
八. 使用(JDK1.7及以上)
1) github拷贝项目
>> git clone https://github.com/Crab2died/Excel4J.git Excel4J |
2) 最新版本maven引用:
<dependency> |