Excel-converter 是一个基于poi的,将excel中的数据读取为java对象,以及将java对象的list导出到excel的工具 。
添加依赖
<dependency>
<groupId>com.jvm123</groupId>
<artifactId>excel-converter</artifactId>
<version>1.0</version>
</dependency>
可在中央仓库查询是否有最新版本: https://mvnrepository.com/artifact/com.jvm123
功能介绍
- 将excel中的数据读取(导入)为java对象
- 将java对象的list导出到excel表格中
(一) excel 数据导入为 java 系统的list
如下图,将左边表格中的数据到入为一个 List<Company> 的实例

1 实例化ExcelImporter对象,再调用convert方法就可以读取为java对象或者map的list,如下 :
String filePath = "./企业人员汇总表.xlsx";
ExcelImporter excelImporter = new ExcelImporter();
// 读取为Map
List<Map<String, Object>> mapList = excelImporter.convertToMap(filePath);
System.out.println(mapList);
// 读取为Person
List<Person> people = excelImporter.convert(new File(filePath), Person.class);
System.out.println(people);
其中convert方法和convertToMap方法都有以下不同的调用方法,参数为excel文件的路径(filePath)、文件(file)或输入流(inputStream):
public List<Map<String, Object>> convertToMap(File file);
public List<Map<String, Object>> convertToMap(InputStream inputStream);
public List<Map<String, Object>> convertToMap(String filePath);
public <T> List<T> convert(File file, Class<T> tClass);
public <T> List<T> convert(InputStream inputStream, Class<T> tClass);
public <T> List<T> convert(String filePath, Class<T> tClass);
2 如果需要自定义导入的属性,可以通过自定义ExcelProperties对象进行设置:
ExcelProperties properties = new ExcelProperties();
properties.setSheetIndex(1);
properties.setCommentRowIndex(0);
properties.setNameRowIndex(1);
properties.setFirstDataRowIndex(2);
properties.setDataRowNum(2);
// 如果设置的dataRowNum大于0,则dataRowIndex的值将会被忽略
properties.setLastDataRowIndex(3);
importer.setExcelProperties(properties);
List<Company> companyList = importer.convert(filePath, Company.class);
其中导入时可以设置以下属性(所有的index都从0开始算):
属性名 | 默认值 | 说明 |
---|---|---|
sheetIndex | 0 | 要导入的表格(sheet)在excel文件中的索引顺序 |
nameRowIndex | 0 | 对应java中bean属性名称的行的序号 |
commentRowIndex | 1 | 对应每一列的说明的行的序号(可无) |
firstDataRowIndex | 2 | 要获取的数据开始行的序号 |
lastDataRowIndex | -1 | 要获取的数据结束行的序号(可无) |
dataRowNum | -1 | 要获取的数据的条数(可无) |
3 导入时需要在表格中设置java实体的字段,这行也可以设置隐藏而不展示给用户:

(二) 将java的list导出到excel表格中

1 实例化ExcelExporter对象,调用export方法即可导出为excel文件,如下:
List<Company> companyList = companys();
ExcelExporter exporter = new ExcelExporter();
exporter.export(companyList, "./companys.xlsx");
2 如果需要自定义导出的属性,可以通过自定义ExcelProperties对象进行设置:
ExcelProperties properties = new ExcelProperties();
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("id", "ID");
map.put("name", "名称");
map.put("date", "日期");
map.put("money", "金额");
properties.setNameHeaderMap(map);
properties.setShowNameRow(true);
properties.setDatePattern("yy/MM/dd hh:mm:sss");
exporter.setProperties(properties);
exporter.export(companyList, file);
导出时可以设置以下属性(所有的index都从0开始算):
属性名 | 默认值 | 说明 |
---|---|---|
showNameRow | false | 导出是否显示nameRow |
nameRowIndex | 0 | 对应java实体属性名的行(nameRow)的序号 |
commentRowIndex | 1 | 对应每一列的说明的行的序号(可无) |
datePattern | m/d/yy h:mm:ss | 导出日期类型的格式 |
columnWidth | 20 | 导出的表格中单元格的宽度 |
nameHeaderMap | null | 导出时java实体属性名的顺序及说明的对应关系(可无), 其中键名为java实体的属性名 |
springBoot 中使用
在springboot中使用 请参考文章 另一篇文章 的介绍。
PingbackExcel-converter:一行代码实现java中excel数据导入导出 – jvm123
PingbackExcel-converter:一行代码实现java中excel数据导入导出 – jvm123
Pingbackjava按模板导出excel – jvm123