大家工作或者平时是不是经常遇到要读写一些简单格式的 Excel?
shit!~ 很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下。
厌烦了每次搞简单类型的 Excel 读写?不怕~ 来,喜欢流式操作?来~,喜欢用 lambda(虽然 java 的比较蛋疼~),来~ 看这个~
哈哈,如果你用的不是 java8~~ 没问题,那就默默地用老方式匿名类来实现这些功能吧,但是这并不妨碍您的使用哈哈~~~
更新多次~ 希望大家也能够集思广益~
欢迎大家 fork,欢迎大家 Star,更欢迎大家多提意见 or 建议,提供更好的想法~~
标题 1 | 标题 2 | 标题 3 |
---|---|---|
foo | foo | foo |
bar | bar | bar |
baz | baz | baz |
- 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 o) ->
- o.get("address").equals("\u5317\u4eac"))
- .Save();
- Listnew 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> 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 o) -> System.out.println(o + "\n")
- 10 //这里能够处理时候过滤某一列
- 11 ).FilterCol(() -> new String[]{}
- 12 //这里能根据某一行的某一列的内容来取舍这行数据
- 13 ).Filter((HashMap 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 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 o) -> {}
- 9 ).FilterCol(() -> new String[]{}
- 10 ).Filter((HashMap o) -> o.get("创建人") !=
- 11 null &&o.get("创建人").length() > 4).CreateMap("创建人"));
来源: