Skip to content

Commit 17eef35

Browse files
committed
更新小bug,详见更新日志
1 parent 6bb8dae commit 17eef35

10 files changed

Lines changed: 51 additions & 16 deletions

File tree

ExcelReads.jar

2.78 KB
Binary file not shown.

README.md

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
1-
# ExcelReads(简单Excel通用读取器)
1+
# ExcelReads(简单Excel通用读写器)
22
## ExcelReads是什么?
33
* 这是一个通用的简单的Excel读取器
44
* 支持自定义JavaBean实体读取和HashMap自动读取
55
* 支持自定义扩展
66
* 支持自定义Sheet范围,数据开始行数
7+
* 支持数据库查询直接导出Excel(Map/Object)
78
* 支持正则过滤数据格式
89
* JavaBean实体支持使用注解添加正则规则校验,HashMap支持数组规则校验
910
* 依赖POI,使用Maven构建
1011

1112
## 更新纪录
1213

14+
### 更新2017/01/04
15+
* 修复据库查询的导出(Map)空指针&下标越界问题
16+
* 修复在Filter数据后出现空行问题
17+
* 丢如Result后的操作就如同操作Map/Object一样
18+
1319
### 更新2017/01/01
14-
* 支持基于数据库查新的导出(Map),直接放入Result对象即可
15-
* 支持基于数据库查新的导出(Object),直接放入Result对象即可
20+
* 增加ResExprotDBMap&ResExprotDBObj用于支持数据库导出
21+
* 支持基于数据库查询的导出(Map),直接放入Result对象即可
22+
* 支持基于数据库查询的导出(Object),直接放入Result对象即可
1623

1724
### 更新2016/11/30
1825
* 增加了简单类型得写入,生成xls/xlsx
@@ -49,7 +56,26 @@
4956
|bar | bar | bar |
5057
|baz | baz | baz |
5158

52-
## 写入例子
59+
## 数据库直接导出到Excel例子
60+
```java
61+
UnpooledDataSource UNPOOLED_DATA_SOURCE = new UnpooledDataSource("com.mysql.jdbc.Driver",
62+
"jdbc:mysql://127.0.0.1:3306/zhihuspider",
63+
"xxxx", "xxxxx"
64+
);
65+
ExcelFactory.saveExcel(
66+
UNPOOLED_DATA_SOURCE.getConnection().
67+
prepareStatement("select * FROM users_info limit 10000").
68+
executeQuery(), "知乎导出Excel.xlsx")
69+
//过滤字段
70+
.FilterCol(() -> new String[]{"updatetime"})
71+
//过滤数据条件
72+
.Filter((HashMap<String, String> o) ->
73+
o.get("address").equals("\u5317\u4eac"))
74+
.Save();
75+
76+
```
77+
78+
## 自定义类型导出到Excel例子
5379
```java
5480
List<A> aa = new ArrayList<>();
5581
aa.add(new A("a", "b"));
@@ -66,7 +92,7 @@ ExcelFactory.saveExcel(aa,
6692
.Sort((A o1,A o2 ) -> o1.getAge()>o2.getAge()?1:o1.getAge()==o2.getAge()?0:-1)
6793
.Save();
6894
```
69-
## 读取例子
95+
## 读取Excel到Map例子
7096
```java
7197
List<Map<String,String>> data=ExcelFactory.getBeans(System.getProperty("user.dir").concat("\\测试.xls"),
7298
new ResWrapperMap() {
@@ -87,7 +113,7 @@ ExcelFactory.saveExcel(aa,
87113
//使用 .CreateMap(key_v) 生成Map<Key,Map>类型数据
88114

89115
```
90-
生成对应自定义类型的写法
116+
## 读取Excel到自定义类型的例子
91117

92118
```java
93119
Map<String,Seven> map=new ResWrapperObj(Seven) {

src/main/java/seven/callBack/DataFilterProcessInterface.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* 此处传入每一行打包好的数据。对应一个实体
1010
* T为实体Bean类型
1111
*/
12+
@FunctionalInterface
1213
public interface DataFilterProcessInterface<T>{
1314
/***
1415
* 此处传入每一行打包好的数据。对应一个实体,

src/main/java/seven/callBack/DataFiterColumnInterface.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* [Bolg]https://matrixseven.github.io/
66
* Created by seven on 2016/10/19.
77
*/
8+
@FunctionalInterface
89
public interface DataFiterColumnInterface {
910
public String[] Filter();
1011
}

src/main/java/seven/callBack/PackageDataInterface.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* [Github]https://github.com/MatrixSeven
2323
* Created by seven on 2017/1/1.
2424
*/
25+
@FunctionalInterface
2526
public interface PackageDataInterface<T> {
2627
T PackageDataProcess(ResultSet res);
2728
}

src/main/java/seven/savewapper/wapperRef/sysWppers/ResExprotDBMap.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public ResExprotMap CreateList() throws Exception {
3535
this.list = new ArrayList<>();
3636
HashMap<String, String> stringStringHashMap;
3737
if (resultSet != null) {
38-
stringStringHashMap = new HashMap<>();
3938
ResultSetMetaData res = resultSet.getMetaData();
40-
int index = res.getColumnCount() + 1;
39+
int index = res.getColumnCount()+1 ;
4140
while (resultSet.next()) {
42-
for (int i = 0; i < index; i++) {
41+
stringStringHashMap = new HashMap<>();
42+
for (int i = 1; i < index; i++) {
4343
stringStringHashMap.put(res.getColumnName(i),
4444
resultSet.getString(res.getColumnName(i)));
4545
}
@@ -51,6 +51,7 @@ public ResExprotMap CreateList() throws Exception {
5151

5252
@Override
5353
public void Save() throws Exception {
54-
CreateList().Save();
54+
this.CreateList();
55+
super.Save();
5556
}
5657
}

src/main/java/seven/savewapper/wapperRef/sysWppers/ResExprotMap.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ public void Save() throws Exception {
8181
}
8282
int index = 0;
8383
for (Map<String, String> o : list) {
84-
row = sheet.createRow(++index);
85-
if (!filter.filter(o)) {
84+
if (!filter.filter(o).booleanValue()) {
8685
continue;
8786
}
87+
row = sheet.createRow(++index);
8888
process.process(o);//加工每一行
8989
for (int i = 0; i < title.length; i++) {
9090
Cell cell = row.createCell(i);

src/test/java/Demo.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ protected void LoadConfig(Config config) {
100100
}
101101

102102

103+
@Test
104+
public void Test_03() throws Exception {
105+
106+
}
107+
103108
@Test
104109
public void Test_02() throws Exception {
105110
List<A> aa = new ArrayList<>();
@@ -108,9 +113,9 @@ public void Test_02() throws Exception {
108113
aa.add(new A("唐山", "18"));
109114
aa.add(new A("狗东", "15"));
110115
aa.add(new A("百毒", "12"));
111-
ExcelFactory.saveExcel(aa,System.getProperty("user.dir").concat("\\seven.xlsx"))
112-
.Filter((A a) ->a.getA().length()==2 )
113-
.Process((A a)->a.setA(a.getA().concat("_seven")))
116+
ExcelFactory.saveExcel(aa, System.getProperty("user.dir").concat("\\seven.xlsx"))
117+
.Filter((A a) -> a.getA().length() == 2)
118+
.Process((A a) -> a.setA(a.getA().concat("_seven")))
114119
.Save();
115120

116121

@@ -132,7 +137,7 @@ public void Test_02() throws Exception {
132137
}
133138

134139
class A {
135-
@ExcelAnno(value ="姓名")
140+
@ExcelAnno(value = "姓名")
136141
String A;
137142
@ExcelAnno(value = "年龄")
138143
String B;

关系(old_01).png

15.4 KB
Loading

关系.png

6.21 KB
Loading

0 commit comments

Comments
 (0)