大家工作或者平時是不是經常遇到要讀寫一些簡單格式的Excel?
shit!~很蛋疼,因為之前吹牛,就搞了個這東西,還算是挺實用,和大家分享下。
厭煩了每次搞簡單類型的Excel讀寫?不怕~來,喜歡流式操作?來~,喜歡用lambda(雖然java的比較蛋疼~),來~看這個~
哈哈,如果你用的不是java8~~沒問題,那就默默地用老方式匿名類來實現這些功能吧,但是這並不妨礙您的使用哈哈~~~
更新多次~希望大家也能夠集思廣益~
歡迎大家fork,歡迎大家Star,更歡迎大家多提意見or建議,提供更好的想法~~
1 ExcelFactory.saveExcel(
2 UNPOOLED_DATA_SOURCE.getConnection().
3 prepareStatement("select * FROM users_info limit 1000").executeQuery(),
4 "\u5317\u4eac__Excel.xlsx",
5 AS.class)
6 .FilterCol(() -> new String[]{"updatetime"})
7 .Filter((AS o) ->o.getA().length() > 3)
8 .Save();
ExcelFactory.saveExcel(
UNPOOLED_DATA_SOURCE.getConnection().
prepareStatement("select * FROM users_info limit 1000").executeQuery(),
"\u5317\u4eac__Excel.xlsx",
res -> {
AS a = new AS();
a.setA(res.getString("name"));
return a;
})
.FilterCol(() -> new String[]{"updatetime"})
.Filter((AS o) ->o.getA().length() > 3)
.Save();
ExcelFactory.saveExcel(
UNPOOLED_DATA_SOURCE.getConnection().
prepareStatement("select * FROM users_info limit 10000").
executeQuery(), "知乎導出Excel.xlsx")
//過濾字段
.FilterCol(() -> new String[]{"updatetime"})
//過濾數據條件
.Filter((HashMap<String, String> o) ->
o.get("address").equals("\u5317\u4eac"))
.Save();
List<A> aa = new ArrayList<>();
aa.add(new A("a", "b"));
aa.add(new A("aa", "bb"));
ExcelFactory.saveExcel(aa,
System.getProperty("user.dir").concat("\\Save.xlsx"))
///這裡能夠處理每一行數據
.Process((A a) -> a.setA("xxxxxxx"))
//過濾列
.FilterCol(() -> new String[]{"B"})
//根據某個字段來處理數據時候丟棄
.Filter((A a) -> a.getA().length() > 1)
//排序
.Sort((A o1,A o2 ) -> o1.getAge()>o2.getAge()?1:o1.getAge()==o2.getAge()?0:-1)
.Save();
1 List<Map<String,String>> data=ExcelFactory.getBeans(System.getProperty("user.dir").concat("\\測試.xls"),
2 new ResWrapperMap() {
3 @Override//配置Excel屬性
4 protected void LoadConfig(Config config) {
5 config.setContent_row_start(3);
6 config.setTitle_row(2);
7 }
8 }).//這裡能夠處理每一行數據
9 Process((HashMap<String, String> o) -> System.out.println(o + "\n")
10 //這裡能夠處理時候過濾某一列
11 ).FilterCol(() -> new String[]{}
12 //這裡能根據某一行的某一列的內容來取捨這行數據
13 ).Filter((HashMap<String, String> o) -> o.get("創建人") != null && o.get("創建人").length() > 5
14 //排序
15 ).Sort((o1, o2) -> o1.hashCode()>o2.hashCode()?1:hashCode()==o2.hashCode()?0:-1).Create();
16
17 //使用 .CreateMap(key_v) 生成Map<Key,Map>類型數據
1 Map<String,Seven> map=new ResWrapperObj(Seven) {
2 @Override
3 protected void LoadConfig(Config config) {
4 config.setContent_row_start(3);
5 config.setTitle_row(2);
6 }
7 }).
8 Process((HashMap<String, String> o) -> {}
9 ).FilterCol(() -> new String[]{}
10 ).Filter((HashMap<String, String> o) -> o.get("創建人") !=
11 null &&o.get("創建人").length() > 4).<Map>CreateMap("創建人"));