您的当前位置:首页正文

黑豹程序员-阿里EasyExcel导入

2024-11-08 来源:个人技术集锦

业务需求

实现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和数据库列的对应关系

一般情况下excel导入的表格和数据库的表格对应,这样特别简单,EasyExcel一句话就实现。
实际业务较复杂。

1、导入数据时跳过表头

headRowNumber(1) 跳过第一行(表头)

List<Property> propertyList = EasyExcel.read(inputStream).head(Property.class).sheet().headRowNumber(1).doReadSync();

2、跳过部分字段

在@ExcelProperty中通过index=?,?为excel的sheet的列索引值,其索引值从0开始计算。
通过这个属性就可以实现实体字段和excel列的人工强行指定映射关系。
注意,早期版本有过@ExcelProertyIndex()的注解,新版都已经去掉,改成@ExcelProperty 的 index属性了

	@ApiModelProperty(value = " 资产编码,不能重复")
	@ExcelProperty(value = "资产编码", index = 0)
	private String code;
Top