介绍
excel-converter 是一个将java对象的list与excel数据相互转化的项目,可以把Excel中的数据导入java的系统中,以及把系统业务数据导出为Excel表格。
而 excel-converter-starter 是直接用在 springboot 项目中的 excel导入导出的项目,项目添加这个依赖之后,可以用一行代码实现 excel 在 java 系统中的导入导出。
应用场景
- 某系统上线初期,需要批量导入用户以及一些基础数据;
- 用户在某系统逐个填写业务信息太慢,要求开发一个从excel导入的功能;
- 用户需要将系统的业务信息导出成excel进行打印或作为附件发送给其他人。
加入依赖
<dependency>
<groupId>com.jvm123</groupId>
<artifactId>excel-converter-starter</artifactId>
<version>1.0</version>
</dependency>
可在中央仓库查询是否有最新版本: https://mvnrepository.com/artifact/com.jvm123
导入步骤:
- 将java对象的属性名称(字段名 nameRow)写在Excel数据的第二(index为 1)行;
- 调用如下一行代码,即可准确导入为java对象的list。
// 将企业人员汇总表中的数据导入为 Person 类型的 List
List<Person> peo = exImporter.convert("./企业人员汇总表.xlsx", Person.class);

导出步骤:
- 若无额外配置,可按照java对象的属性将一个 list 导出为 excel;
- 若配置了属性对应的表头,即可在 excel 中显示表头信息。
// 将 personList 导出到 excel 表格
exExporter.export(personList, "./export.xlsx");

如果不使用默认的配置属性,也可以自定义,详细配置属性可以参考 上一篇文章 中的两个表格。
配置方法在下面介绍了 application.yml 中的配置, application.properties 的配置类似。
java一行代码调用方式在本文末尾介绍了,有多种调用方式。
使用示例(springboot 中)
1 导入依赖
<dependency>
<groupId>com.jvm123</groupId>
<artifactId>excel-converter-starter</artifactId>
<version>1.0.</version>
</dependency>
可在中央仓库查询是否有最新版本: https://mvnrepository.com/artifact/com.jvm123
2 使用步骤
1. 将ExImporter或ExExporter注入使用即可
@RestController
public class DemoExcelConvertController {
@Autowired
private ExImporter exImporter;
@Autowired
private ExExporter exExporter;
@GetMapping("test")
public List<Person> person() {
// 1. 将excel表格的数据导入java
List<Person> peo = exImporter.convert("./企业人员汇总表.xlsx", Person.class);
System.out.println(peo);
return peo;
}
@GetMapping("test3")
public void test3(HttpServletResponse response) throws IOException {
// 1. 构造java数据
Company c = new Company();
c.setAddress("address");
c.setAmount(0.1245D);
c.setDate(new Date());
c.setMoney(0.23123);
c.setName("yawn");
c.setId(12);
// 2. 将java数据导出为excel表格
exExporter.export(Arrays.asList(c, c, c), "./export.xlsx");
// 3. 将java数据导出为excel表格并下载
response.addHeader("Content-Disposition", "attachment;filename=export.xlsx");
exExporter.export(Arrays.asList(c, c, c), response.getOutputStream());
}
}
2. 如需要设置导入或导出的属性,可在application.yml文件中配置,如下:
excel:
converter:
props-map:
default:
name-row-index: 0
comment-row-index: 1
first-data-row-index: 2
name-header-map:
id: ID
name: 名称
address: 地址
date: 日期
show-name-row: true
date-pattern: yyyy-MM-dd hh:mm:ss
company:
sheet-index: 1
name-row-index: 1
comment-row-index: 0
first-data-row-index: 2
last-data-row-index: -1
data-row-num: -1
start-column-index: 0
此配置中包含了两个属性实例,名称分别为 default 和 company, 导入或导出时若想使用某个配置实例,只需要将名称传入调用方法的 propsName 参数即可。若不传这个参数,则默认为 default。
以上配置代码重写了”default”配置,并添加了新的配置”company”,使用这两个配置的属性进行导入或导出时,示例如下:
@RestController
public class DemoExcelConvertController {
@Autowired
private ExImporter exImporter;
@Autowired
private ExExporter exExporter;
@GetMapping("test2")
public List<Company> test2() {
// 根据company配置导出到excel
List<Company> companyList = exImporter.convert("./企业人员汇总表.xlsx", "company", Company.class);
System.out.println(companyList);
return companyList;
}
@GetMapping("test4")
public void test3(HttpServletResponse response) throws IOException {
Company c = new Company();
c.setAddress("address");
c.setAmount(0.1245D);
c.setDate(new Date());
c.setMoney(0.23123);
c.setName("yawn");
c.setId(12);
// 根据重写的default配置导出
exExporter.export(Arrays.asList(c, c, c), "./export.xlsx");
response.addHeader("Content-Disposition","attachment;filename=export.xlsx");
exExporter.export(Arrays.asList(c, c, c), response.getOutputStream(), "company");
}
}
3. ExImporter导入调用的方法有:
public <T> List<T> convert(String filePath, String propsName, Class<T> tClazz);
public <T> List<T> convert(File file, String propsName, Class<T> tClazz);
public <T> List<T> convert(InputStream is, String propsName, Class<T> tClazz);
public <T> List<T> convert(String filePath, Class<T> tClazz);
public <T> List<T> convert(File file, Class<T> tClazz);
public <T> List<T> convert(InputStream is, Class<T> tClazz);
其中propsName为要使用的yml文件中配置的转换属性的名称
4.ExExporter导出调用的方法有:
public <T> void export(List<T> beanList, String pathFile);
public <T> void export(List<T> beanList, File file);
public <T> void export(List<T> beanList, OutputStream os);
public <T> void export(List<T> beanList, String pathFile, String propsName);
public <T> void export(List<T> beanList, File file, String propsName);
public <T> void export(List<T> beanList, OutputStream os, String propsName);
注意: 上述方法并不能导出Map,若需要导出Map类型的List,需要使用exportMapList()方法,参数和调用方法与上面的类似。
Pingbackexcel-converter:一行代码实现java中excel数据导入导出 – jvm123
PingbackExcel-converter:一行代码实现java中excel数据导入导出 – jvm123
律师函警告
哈哈,纯原创,自己写的工具,分享一下而已。
源码在gitee
厉害厉害
过奖过奖