作者:mobiledu2502913517 | 来源:互联网 | 2023-07-15 17:39
1前言为了简化Excel和Csv的操作复杂性,我自己写了一个工具类可以轻松读和写excel或者csv文件。本文主要介绍如何使用2项目源码地址3具体使用教程核心类:操作本工具主要使用
1前言
为了简化Excel和Csv的操作复杂性,我自己写了一个工具类可以轻松读和写excel或者csv文件。本文主要介绍如何使用
2 项目源码
地址
3 具体使用教程
- 核心类:操作本工具主要使用
MambaExcelFactory
,负责整合操作对象的构建
3.1 读取Excel
可以用来读取指定的List对象,比如有张表记录User的信息,那么可以指定User类型并且通过List接收。例子如图所示
@Test
public void testExcelReader() {
//指定excel标题头,并且指定每个字段的类型
List headerDataList = HeaderDataBuilder.instance()
.fill("name", STRING)
.fill("age", INTEGER)
.fill("address", STRING)
.fill("salary", DOUBLE)
.fill("married", BOOLEAN)
.build();
MambaExcelFactory.build().readInstance("E:/user.xlsx", User.class, headerDataList)
.read(new DataReadListener<>((users -> {
//可以对查询到的结果进行特定逻辑的处理
System.out.println(JSON.toJSONString(users));
})));
}
上面代码的意思是首先构建excel标题头的信息,指定User
中每个字段的类型(注意User类需要预先定义好)。然后构建MambaExcelFactory
对象,通过readInstance
方法指定excel的路径,刚刚说的你要接收的类型User以及构建好的标题头信息。最后通过DataReadListener监听器来对读取到的List集合做想要的操作。当然,如果你想要读取指定的sheet,可以在readInstance
方法中指定特定的sheetName。
3.2 写Excel
写excel的话例子如下: 同样需要先构建excel标题头信息,然后需要通过ContentDataBuilder
构建excel的内容信息,具体的内容可以指定具体对象比如User,最后通过writeInstance
方法指定生成路径,标题头,内容等信息。
@Test
public void testExcelWriter() {
List headerDataList = HeaderDataBuilder.instance()
.fill("name", STRING)
.fill("age", INTEGER)
.fill("address", STRING)
.fill("salary", DOUBLE)
.fill("married", BOOLEAN)
.build();
List cOntentList= ContentDataBuilder.instance(headerDataList)
.fill(new User("jack", 29, "shanghai", 1111.1, true)).build();
MambaExcelFactory.build().writeInstance("./user2.xlsx", headerDataList, contentList).write();
}
当然,一般我们都是批量写数据,所以本工具肯定也支持指定比如List来批量写User数据
@Test
public void testExcelWriter2() {
List headerDataList = HeaderDataBuilder.instance()
.fill("name", STRING)
.fill("age", INTEGER)
.fill("address", STRING)
.fill("salary", DOUBLE)
.fill("married", BOOLEAN)
.build();
List users = new ArrayList<>();
User user1 = new User("jack", 29, "shanghai", 12111d, true);
User user2 = new User("rose", 24, "beijing", 12000d, true);
User user3 = new User("jack", 29, "shanghai", 11111.1, true);
users.add(user1);
users.add(user2);
users.add(user3);
List cOntentList= ContentDataBuilder.instance(headerDataList)
.fill(users).build();
MambaExcelFactory.build().writeInstance("./user3.xlsx", headerDataList, contentList).write();
}
只需要将fill方法中的参数变为List即可
还有一种情况是并不指定写的内容是什么类型,比如只想导出所有的用户名,那么可以通过如下方式进行:
@Test
public void testExcelWriter3() {
List headerDataList = HeaderDataBuilder.instance()
.fill("name", STRING)
.build();
List users = new ArrayList<>();
Object name1 = "joe";
Object name2 = "rose";
Object name3 = "jack";
users.add(name1);
users.add(name2);
users.add(name3);
List cOntentList= ContentDataBuilder.instance(headerDataList)
.fill(users,false).build();
MambaExcelFactory.build().writeInstance("./user4.xlsx", headerDataList, contentList).write();
}
3.2 读写CSV
读写csv文件操作和excel一模一样,因此不再赘述,只需将读取生成文件改成csv格式即可
注意:如果在使用过程中需要任何bug或者问题,可以在github提issue给我 地址