导入maven依赖
<!-- hutool -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!--******** 处理excel文件使用poi包 start********-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.ooxml.version}</version>
</dependency>
<!--******** 处理excel文件使用poi包 end********-->
Controller层编写(将读取的数据保存到数据库)
@RequestMapping("/populationImports")
public BaseResponse populationImports(MultipartFile file) {
//往数据库插入数据
BaseResponse baseResponse = ExcelUtils.importFile(file);
List<PopulationImport> list = (List<PopulationImport>) baseResponse.getResponse().getData();
populationImportService.save(list);
return BaseResponse.returnSuccess();
}
使用 hutool 读取Excel模版数据
/**
* Excel文件导入
*
* @param file
* @throws Exception
*/
public static BaseResponse importFile(MultipartFile file) {
try {
String fileName = file.getOriginalFilename();
String message = null;
// 上传文件为空
if (StringUtils.isEmpty(fileName)) {
message = "没有导入文件";
return BaseResponse.returnFault(message);
}
//上传文件大小为1000条数据
if (file.getSize() > 1024 * 1024 * 10) {
message = "上传失败: 文件大小不能超过10M!";
return BaseResponse.returnFault(message);
}
// 上传文件名格式不正确
if (fileName.lastIndexOf(".") != -1 && !".xlsx".equals(fileName.substring(fileName.lastIndexOf(".")))) {
message = "文件名格式不正确, 请使用后缀名为.xlsx的文件";
return BaseResponse.returnFault(message);
}
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = ExcelUtil.getReader(inputStream, "sheet1");
assembleReader(excelReader);
//转成集合,用于存储到数据库
List<PopulationImport> populationList = excelReader.readAll(PopulationImport.class);
return BaseResponse.returnSuccess(populationList);
} catch (Exception e) {
return BaseResponse.returnFault(e.getMessage());
}
}
private static void assembleReader(ExcelReader reader) {
reader.addHeaderAlias("年度", "year");
reader.addHeaderAlias("行政区划编码", "addressCode");
reader.addHeaderAlias("行政区划名称", "addressName");
reader.addHeaderAlias("老年人口数", "populationNum");
}