Skip to content

Commit e7f6bfb

Browse files
committed
增加方法,完善异常体系,详见更新日志
1 parent 0f02f33 commit e7f6bfb

10 files changed

Lines changed: 132 additions & 46 deletions

File tree

ExcelReads.jar

1.39 KB
Binary file not shown.

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
* 依赖POI,使用Maven构建
1111

1212
## 更新纪录
13+
### 更新2017/01/09
14+
* 增加SetPath方法,随时切换保存路径
15+
* 增加Flush方法,不在建议使用~~Save(@Deprecated)~~方法进行保存输出
16+
* 增加SetOutputStream方法,可以放入自定义流,用于支持网页Response输出
17+
* 处理一些小bug,完善异常提示信息
1318
### 更新2017/01/06
1419
* 整合注解,导出和读取使用同一个ExcelAnno注解
1520
* 统一编码为UTF-8

src/main/java/seven/ExcelFactory.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ public static SaveExcel saveExcel(ResultSet resultSet, String FilePath) throws E
5757
public static SaveExcel saveExcel(ResultSet resultSet, String FilePath, PackageDataInterface packageDataInterface) throws Exception {
5858
return new ResExprotDBObj(resultSet,FilePath,packageDataInterface);
5959
}
60-
public static SaveExcel saveExcel(ResultSet resultSet, String FilePath, Class type) throws Exception {
61-
return new ResExprotDBObj(resultSet,FilePath,type);
60+
public static SaveExcel saveExcel(ResultSet resultSet,Class type) throws Exception {
61+
return new ResExprotDBObj(resultSet,type);
62+
}
63+
public static SaveExcel saveExcel(ResultSet resultSet) throws Exception {
64+
return new ResExprotDBMap(resultSet);
6265
}
63-
6466
}

src/main/java/seven/savewapper/SaveExcel.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import seven.callBack.DataFilterInterface;
2121
import seven.callBack.DataFilterProcessInterface;
2222

23+
import java.io.OutputStream;
2324
import java.util.Comparator;
2425

2526
/**
@@ -29,36 +30,55 @@
2930
*/
3031
public interface SaveExcel extends ExcelSuperInterface {
3132

33+
@Deprecated
3234
void Save() throws Exception;
3335
/**
3436
* 对要包装的数据进行过滤,对应实体Bean\n
3537
* 如果返回false将放弃此条数据
3638
* @param filter {@link DataFilterInterface}
3739
* @return
3840
*/
39-
public abstract SaveExcel Filter(DataFilterInterface<?> filter);
41+
SaveExcel Filter(DataFilterInterface<?> filter);
4042

4143
/**
4244
*此处传入每一行打包好的数据。对应一个实体\n
4345
* 在process方法里可对属性进行处理加工
4446
* @param process {@link DataFilterProcessInterface}
4547
* @return
4648
*/
47-
public abstract SaveExcel Process(DataFilterProcessInterface<?> process);
49+
SaveExcel Process(DataFilterProcessInterface<?> process);
4850

4951
/**
5052
* 对结果的List进行排序
5153
* @param c
5254
* @return
5355
*/
54-
public abstract SaveExcel Sort(Comparator<? super Object> c);
56+
SaveExcel Sort(Comparator<? super Object> c);
5557

5658
/**
5759
* 此处过滤Excel的列数据(列名)\n
5860
* 如果加入后,将不对实体进行赋值
5961
* @param df {@link DataFilterColumnInterface}
6062
*/
61-
public abstract SaveExcel FilterCol(DataFilterColumnInterface df);
63+
SaveExcel FilterCol(DataFilterColumnInterface df);
6264

65+
/**
66+
* 网页输出流
67+
* @param stream
68+
* @return
69+
*/
70+
SaveExcel SetOutputStream(OutputStream stream) throws Exception;
71+
72+
/**
73+
*
74+
* @throws Exception
75+
*/
76+
void Flush() throws Exception ;
77+
78+
/**
79+
* 设置保存路径
80+
* @param path
81+
*/
82+
SaveExcel SetPath(String path);
6383

6484
}

src/main/java/seven/savewapper/wapperRef/SaveExcelObject.java

Lines changed: 59 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@
1515
// (______|______)
1616
//=======================================================
1717

18+
import org.apache.poi.ss.usermodel.Workbook;
1819
import seven.callBack.DataFilterColumnInterface;
1920
import seven.callBack.DataFilterInterface;
2021
import seven.callBack.DataFilterProcessInterface;
2122
import seven.callBack.imp.DefaultDataFilter;
2223
import seven.callBack.imp.DefaultDataProFilter;
2324
import seven.savewapper.SaveExcel;
25+
import seven.util.ExcelTool;
2426

27+
import java.io.FileOutputStream;
28+
import java.io.OutputStream;
2529
import java.sql.ResultSet;
2630
import java.util.ArrayList;
2731
import java.util.Comparator;
@@ -32,51 +36,95 @@
3236
* [Github]https://github.com/MatrixSeven
3337
* Created by seven on 2016/11/30.
3438
*/
35-
public abstract class SaveExcelObject<T> implements SaveExcel{
39+
public abstract class SaveExcelObject<T> implements SaveExcel {
3640
protected List<T> list;
41+
public static final String DEFAULT_TYPE="xlsx";
3742
protected String path;
38-
protected List<String> filterColBy_key=new ArrayList<>();
39-
protected DataFilterInterface filter=new DefaultDataFilter<Object>();
40-
protected DataFilterProcessInterface process=new DefaultDataProFilter<Object>();
41-
protected Comparator<? super Object> c=null;
42-
protected ResultSet resultSet=null;
43+
protected List<String> filterColBy_key = new ArrayList<>();
44+
protected DataFilterInterface filter = new DefaultDataFilter<Object>();
45+
protected DataFilterProcessInterface process = new DefaultDataProFilter<Object>();
46+
protected Comparator<? super Object> c = null;
47+
protected ResultSet resultSet = null;
48+
protected OutputStream stream = null;
49+
protected Boolean isResponse = false;
50+
protected Workbook wk=null;
4351

4452
public SaveExcelObject(List<T> list, String path) {
4553
this.list = list;
4654
this.path = path;
4755
}
56+
57+
public SaveExcelObject(List<T> list) {
58+
this.list = list;
59+
}
60+
4861
public SaveExcelObject(ResultSet resultSet, String path) {
49-
this.resultSet=resultSet;
62+
this.resultSet = resultSet;
5063
this.path = path;
5164
}
5265

66+
public SaveExcelObject(ResultSet resultSet) {
67+
this.resultSet = resultSet;
68+
}
69+
5370
@Override
5471
public SaveExcelObject Filter(DataFilterInterface<?> filter) {
55-
this.filter=filter;
72+
this.filter = filter;
5673
return this;
5774
}
75+
protected Workbook createWK() throws Exception{
76+
return wk = ExcelTool.newInstance(path.equals("")?DEFAULT_TYPE:path, true);
77+
}
5878

5979
@Override
6080
public SaveExcelObject Process(DataFilterProcessInterface<?> process) {
61-
this.process=process;
81+
this.process = process;
6282
return this;
6383
}
6484

6585
@Override
6686
public SaveExcelObject Sort(Comparator<? super Object> c) {
67-
this.c=c;
87+
this.c = c;
6888
return this;
6989
}
90+
7091
@Override
7192
public SaveExcelObject FilterCol(DataFilterColumnInterface df) {
72-
for (String s:df.filter() ) {
93+
for (String s : df.filter()) {
7394
filterColBy_key.add(s);
7495
}
7596
return this;
7697
}
98+
7799
protected void checkData() throws Exception {
78100
if (this.list.isEmpty()) {
79101
throw new Exception("数据为空,请检查数据源");
80102
}
81103
}
104+
105+
protected OutputStream createStream() throws Exception {
106+
if (stream == null) {
107+
if (path == null|| path.equals(""))
108+
throw new Exception("请输入路径");
109+
return new FileOutputStream(path);
110+
}
111+
return stream;
112+
}
113+
114+
@Override
115+
public SaveExcel SetOutputStream(OutputStream stream) throws Exception {
116+
this.stream = stream;
117+
return this;
118+
}
119+
120+
@Override
121+
public void Flush() throws Exception {
122+
this.Save();
123+
}
124+
125+
@Override
126+
public SaveExcel SetPath(String path) {
127+
this.path = path;
128+
return this;
129+
}
82130
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public class ResExprotDBMap extends ResExprotMap {
3030
public ResExprotDBMap(ResultSet resultSet, String path) {
3131
super(resultSet, path);
3232
}
33+
public ResExprotDBMap(ResultSet resultSet) {
34+
super(resultSet);
35+
}
3336

3437
public ResExprotMap CreateList() throws Exception {
3538
this.list = new ArrayList<>();

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,22 @@ public class ResExprotDBObj extends ResExprotObj {
3232
protected PackageDataInterface dataInterface;
3333
protected Class clazz = null;
3434

35-
// protected T type;
3635
public ResExprotDBObj(ResultSet resultSet, String path, PackageDataInterface dataInterface) {
3736
super(resultSet, path);
3837
this.dataInterface = dataInterface;
39-
// Type sType = getClass().getGenericSuperclass();
40-
// Type[] generics = ((ParameterizedType) sType).getActualTypeArguments();
41-
// Class<T> mTClass = (Class<T>) (generics[0]);
42-
// try {
43-
// type = mTClass.newInstance();
44-
// } catch (Exception e) {
45-
// e.printStackTrace();
46-
// }
47-
4838
}
4939

5040
public ResExprotDBObj(ResultSet resultSet, String path, Class type) {
5141
super(resultSet, path);
5242
this.clazz = type;
5343
}
44+
public ResExprotDBObj(ResultSet resultSet,Class type) {
45+
super(resultSet);
46+
this.clazz = type;
47+
}
5448

5549
public ResExprotDBObj CreateList() throws Exception {
5650
this.list = new ArrayList<>();
57-
// Object o;
58-
// Method[] methods= dataInterface.getClass().getDeclaredMethods();
59-
// Class<?>[] type= methods[0].getParameterTypes();
60-
// Class<?> clazz= type[type.length-1].getClass();
6151
if (clazz != null) {
6252
Field[] fields= ExcelTool.GetFilesDeep(clazz);
6353
int len =fields.length;

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import seven.savewapper.wapperRef.SaveExcelObject;
2020
import seven.util.ExcelTool;
2121

22-
import java.io.FileOutputStream;
2322
import java.io.OutputStream;
2423
import java.sql.ResultSet;
2524
import java.util.*;
@@ -33,17 +32,20 @@ public class ResExprotMap extends SaveExcelObject<Map> {
3332
public ResExprotMap(List<Map> list, String path) {
3433
super(list, path);
3534
}
36-
3735
public ResExprotMap(ResultSet resultSet, String path) {
3836
super(resultSet, path);
3937
}
38+
public ResExprotMap(ResultSet resultSet) {
39+
super(resultSet);
40+
}
4041

4142

4243

4344
@Override
45+
@Deprecated
4446
public void Save() throws Exception {
45-
Workbook wk = ExcelTool.newInstance(path, true);
46-
OutputStream out = new FileOutputStream(path);
47+
OutputStream out = createStream();
48+
createWK();
4749
checkData();
4850
if (c != null) {
4951
list.sort(c);
@@ -95,10 +97,10 @@ public void Save() throws Exception {
9597
}
9698
try {
9799
wk.write(out);
100+
out.flush();
98101

99102
} finally {
100-
wk.close();
101-
out.close();
103+
ExcelTool.Close(wk,out);
102104
}
103105
}
104106
}

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import seven.savewapper.wapperRef.SaveExcelObject;
2121
import seven.util.ExcelTool;
2222

23-
import java.io.FileOutputStream;
2423
import java.io.OutputStream;
2524
import java.lang.reflect.Field;
2625
import java.sql.ResultSet;
@@ -39,11 +38,18 @@ public ResExprotObj(List<Object> list, String path) {
3938
public ResExprotObj(ResultSet resultSet, String path) {
4039
super(resultSet, path);
4140
}
41+
public ResExprotObj(List<Object> list){
42+
super(list);
43+
};
44+
public ResExprotObj(ResultSet resultSet) {
45+
super(resultSet);
46+
}
4247

4348
@Override
49+
@Deprecated
4450
public void Save() throws Exception {
45-
Workbook wk = ExcelTool.newInstance(path, true);
46-
OutputStream out = new FileOutputStream(path);
51+
OutputStream out =createStream();
52+
createWK();
4753
checkData();
4854
Class<?> clazz = list.get(0).getClass();
4955
Field[] fields = ExcelTool.GetFilesDeep(clazz);
@@ -105,9 +111,9 @@ public void Save() throws Exception {
105111

106112
try {
107113
wk.write(out);
114+
out.flush();
108115
} finally {
109-
wk.close();
110-
out.close();
116+
ExcelTool.Close(wk,out);
111117
}
112118
}
113119
}

src/main/java/seven/util/ExcelTool.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.poi.ss.usermodel.Workbook;
2121
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
2222

23+
import java.io.Closeable;
2324
import java.io.File;
2425
import java.lang.reflect.Field;
2526
import java.lang.reflect.Method;
@@ -32,9 +33,6 @@
3233
public class ExcelTool {
3334
private ExcelTool() {
3435
}
35-
36-
;
37-
3836
public static final Workbook newInstance(String type, boolean isSave) throws Exception {
3937
File f = new File(type);
4038
if (isSave) {
@@ -53,6 +51,18 @@ public static final Workbook newInstance(String type, boolean isSave) throws Exc
5351
return new XSSFWorkbook(f);
5452
}
5553

54+
public static final void Close(Closeable... close)throws Exception{
55+
try {
56+
for(Closeable closeable:close){
57+
if(closeable!=null){
58+
closeable.close();
59+
}
60+
}
61+
}catch (Exception e){
62+
throw new Exception("关闭流出错");
63+
}
64+
}
65+
5666
public static final Field[] GetFilesDeep(Class<?> t) {
5767
if (!t.getSuperclass().equals(Object.class)) {
5868
Field fieldSu[] = GetFilesDeep(t.getSuperclass());

0 commit comments

Comments
 (0)