实现excel内容导入到数据库中
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.3</version>
</dependency>
@PostMapping("/risk/product-dir/import")
public R excelToDb(@RequestParam("file") MultipartFile file) throws IOException {
// InputStream is = new FileInputStream("d:/x.xlsx"); //读取本地文件
InputStream is = file.getInputStream();
productDirService.importData(is);
return R.success("导入成功");
}
List<Object> dataList = EasyExcel.read(is).sheet().doReadSync();
一般情况下excel导入的表格和数据库的表格对应,这样特别简单,EasyExcel一句话就实现。
实际业务较复杂。
headRowNumber(1) 跳过第一行(表头)
List<Property> propertyList = EasyExcel.read(inputStream).head(Property.class).sheet().headRowNumber(1).doReadSync();
在@ExcelProperty中通过index=?,?为excel的sheet的列索引值,其索引值从0开始计算。
通过这个属性就可以实现实体字段和excel列的人工强行指定映射关系。
注意,早期版本有过@ExcelProertyIndex()的注解,新版都已经去掉,改成@ExcelProperty 的 index属性了
@ApiModelProperty(value = " 资产编码,不能重复")
@ExcelProperty(value = "资产编码", index = 0)
private String code;