alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.09k stars 7.5k forks source link

导入excel时,如何处理缺少几列的模板 #3870

Open Cjz-Y opened 2 months ago

Cjz-Y commented 2 months ago

问题描述

导入和导出使用同样的数据结构,但是数据在导出的过程中使用了excludeColumnIndexes函数屏蔽了几列,如果需要使用该导出文件作为导入文件的模板的情况下,导入该如何处理才能忽略这缺失的几列,让数据正确解析。

Cjz-Y commented 2 months ago

使用excludeColumnIndexes函数是为了在使用同一个数据结构下,能够根据场景动态的屏蔽其中一些字段,但是导入好像没有这样的能力

YangJingf commented 2 months ago

你导入的时候,是通过index匹配还是通过Name匹配呢

Cjz-Y commented 2 months ago

每个字段都标注了ExcelProperty注解,注解上同时使用了value和index

YangJingf commented 2 months ago

每个字段都标注了ExcelProperty注解,注解上同时使用了value和index

来一点代码和Excel截图

Cjz-Y commented 2 months ago
public class DemoDto {

    @ExcelProperty(value = "demo_key1", index = 0)
    private Long demo1;

    @ExcelProperty(value = "demo_key2", index = 1)
    private String demo2;

    @ExcelProperty(value = "inputValue", index = 2)
    private String inputValue;
}

导出的时候构建WriteSheet,使用excludeColumnIndexes函数来屏蔽第一列(其实就是想根据场景动态的隐藏列,又需要在此基础上完成导入)

EasyExcel.writerSheet(sheetIndex) .sheetName(sheetName) .excludeColumnIndexes(Lists.newArrayList(0)) .head(head) .build();

这种情况下导出的excel,会缺少第一列。 如果在同样使用DemoDto的作为导入的数据结构的基础上,并且将这个导出excel作为基础,填充了inputValue列,能够正确的解析数据吗。