|
2 | 2 |
|
3 | 3 |  |
4 | 4 |  |
5 | | - |
| 5 | + |
| 6 | + |
6 | 7 | ## ExcelReads是什么? |
7 | 8 | * 这是一个通用的简单的Excel读取器 |
8 | 9 | * 支持自定义JavaBean实体读取和HashMap自动读取 |
|
18 | 19 | <dependency> |
19 | 20 | <groupId>com.github.matrixseven</groupId> |
20 | 21 | <artifactId>ExcelReads</artifactId> |
21 | | - <version>1.0.2</version> |
| 22 | + <version>1.0.3</version> |
22 | 23 | </dependency> |
23 | 24 |
|
| 25 | + |
| 26 | + |
24 | 27 | ``` |
25 | 28 |
|
26 | 29 | ## [更新日志详见:UpdateLogs.md](UPDATELOG.MD) |
27 | 30 | ###最近三次更新: |
28 | 31 |
|
| 32 | + |
| 33 | +#### 更新2019/12/2 |
| 34 | +* 替换导出方式 |
| 35 | +* 增加 Create/CreateLoop[Map|Obj] |
| 36 | +* 更新顶层接口 |
| 37 | + |
29 | 38 | #### 更新2019/4/26 (诈尸更新) |
30 | 39 | * 更加完善的类型推导,书写更方便(Great!!!) |
31 | 40 | * 修复增加过滤列无法读取数据bug |
|
37 | 46 | * 增加AnyCol来对应FilterCol方法,只保留AnyCol类列 |
38 | 47 | * 增加SetCellStyle,突破CellStyle绑定wk约束,链式设置列单元格风格(非常狗血) |
39 | 48 |
|
40 | | -#### 更新2017/01/09 |
41 | | -* 增加SetPath方法,随时切换保存路径 |
42 | | -* 增加ConvertName方法,方便自定义Excel列名称 |
43 | | -* 增加Flush方法,不在建议使用~~Save(@Deprecated)~~方法进行保存输出 |
44 | | -* 增加SetOutputStream方法,可以放入自定义流,用于支持网页Response输出 |
45 | | -* 处理一些小bug,完善异常提示信息 |
46 | 49 |
|
47 | 50 | ### 其他 |
48 | 51 | * 自定义读取支持出简单的规范化数据格式,即典型的表头格式 |
|
64 | 67 |
|
65 | 68 | * 喜大若奔(。・・)ノ Filter/Sort等lambda操作不用在声明类型(~~还是要写一个泛型~~) |
66 | 69 | ```java |
67 | | -//读取到Map类型 |
68 | | -//使用 .CreateMap(key_v) 生成Map<Key,Map>类型数据 |
69 | | -List<Map<String, String>> list = ExcelFactory.getBeans(filePath, WrapperFactory |
70 | | - .MakeMap(it -> it.vocSize(1999).title(2).content(3))) |
71 | | - .Filter(it -> !it.get("服务IP").contains("12")) |
72 | | - .Process(it -> it.put("add", "这个是我增加的")) |
73 | | - .FilterCol(df -> df.add("连接类型")) |
74 | | - .CreateMap(); |
75 | | - |
76 | | -//读取到自定义JavaBean类型 |
77 | | -List<A> create = ExcelFactory.getBeans(filePath2, WrapperFactory.<A>MakeObj(it -> it.vocSize(1999) |
78 | | - .title(0).content(1), A.class)) |
79 | | - .Filter(it -> it.getA().equals("")) |
80 | | - .FilterCol(it -> it.add("1")) |
81 | | - .Sort(Comparator.comparing(A::getA)) |
82 | | - .Create(); |
| 70 | + //CreateMapLoop 多sheet|isLoopSheet |
| 71 | + Map<String, Map<String, String>> maps = ExcelFactory.getMaps(filePath, it -> it.vocSize(1999) |
| 72 | + .title(2) |
| 73 | + .content(3) |
| 74 | + .isLoopSheet(true)) |
| 75 | + .Filter(it -> it.get("在线人数").equals("43")) |
| 76 | + .CreateMapLoop(); |
| 77 | + //CreateMap 单个 |
| 78 | + List<Map<String, String>> maps2 = ExcelFactory.getMaps(filePath, it -> it.vocSize(1999) |
| 79 | + .title(2) |
| 80 | + .content(3)) |
| 81 | + .Filter(it -> it.get("在线人数").equals("43")) |
| 82 | + .CreateMap(); |
| 83 | + //Create Obj |
| 84 | + List<B> create = ExcelFactory.<B>getBeans(B.class, filePath, it -> it.title(2) |
| 85 | + .content(3)).Create(); |
| 86 | + System.out.println(create); |
| 87 | + //CreateObjLoop |
| 88 | + String filePath2 = System.getProperty("user.dir").concat("/seven.xlsx"); |
| 89 | + Map<String, List<A>> stringListMap = ExcelFactory.<A>getBeans(A.class, filePath2, |
| 90 | + it -> it.withConvert("姓名", ConvertTest.class) |
| 91 | + .isLoopSheet(true) |
| 92 | + .withConvert("姓名", f -> f.toString().concat("111111111"))) |
| 93 | + .Process(a -> a.setA(a.getA() + "fuck")) |
| 94 | + .CreateObjLoop(); |
83 | 95 | ``` |
84 | 96 | ## 数据库导出自定义Bean类型写法(xxx.Class类型) |
85 | 97 | ```java |
@@ -117,4 +129,8 @@ ExcelFactory.saveExcel(ps.executeQuery()).SetPath("seven.xlsx") |
117 | 129 | * 邮件(hacker.kill07@gmail.com) |
118 | 130 | * QQ: 985390927 |
119 | 131 | * weibo: [@Alden_情绪控](http://weibo.com/Sweets07) |
120 | | -* Blog: [http://blog.52python.cn](http://blog.52python.cn) |
| 132 | +* Blog: [http://blog.52python.cn](http://blog.52python.cn) |
| 133 | + |
| 134 | +## Acknowledgement |
| 135 | +特别感谢 [JetBrains](https://www.jetbrains.com/?from=matrixSeven) 为开源项目提供免费的 [IntelliJ IDEA](https://www.jetbrains.com/idea/?from=matrixSeven) 等 IDE 的授权 |
| 136 | +[<img src="jetbrains-variant-3.png" width="200"/>](https://www.jetbrains.com/?from=matrixSeven) |
0 commit comments