[]
将此类与 IRange.importData(Object,DataImportOptions) 配合使用,可以配置空间不足的处理方式、是否包含列标题、导入哪些列,以及如何解析自动生成列的项类型等行为。
Map<String, Object> item = new LinkedHashMap<>();
item.put("Name", "Alice");
item.put("City", "Seattle");
Map<String, Object>[] items = new Map[] {item};
DataImportOptions options = new DataImportOptions();
worksheet.getRange("A1").importData(items, options);
booleanvoidsetColumnsSelector(Function<Object,Object> value) voidsetIncludeColumnsHeader(boolean value) voidvoidsetItemTypeProvider(Function<Object,Class<?>> value) Function 接受 Iterable、数组或 ResultSet 以选择列。int[](Kotlin 中为 IntArray),通过索引为指定的 ResultSet 选择列。String[],通过名称为指定的 ResultSet、字典或自定义对象选择列。Function[](其中 T 是集合的元素类型,R 是属性类型),使用自定义列 getter 选择列。在这种情况下, getIncludeColumnsHeader() 必须为 false。否则,将抛出异常,因为无法得知列名。AbstractMap.SimpleEntry[](其中 K 是列名 String,V 是属性 getter Function;对于每个 Function,T 是集合的元素类型,R 是属性类型),使用自定义列名和自定义列 getter 选择列。在这种情况下, getIncludeColumnsHeader() 应为 true。否则,将忽略列名。
DataImportOptions options = new DataImportOptions();
options.setColumnsSelector(source -> new String[] {"Name", "City"});
Function<Object, Object> selector = options.getColumnsSelector();
选择使用 IRange.importData(Object,DataImportOptions) 时导入哪些列。如果未指定选择器,则自动生成所有列。
选择器函数接收传递给 importData 的源对象,并返回要导入的列。根据源类型,该函数可以返回列索引、列名或自定义列定义。
Map<String, Object> item = new LinkedHashMap<>();
item.put("Name", "Alice");
item.put("Age", 30);
item.put("City", "Seattle");
Map<String, Object>[] items = new Map[] {item};
DataImportOptions options = new DataImportOptions();
options.setColumnsSelector(source -> new String[] {"Name", "City"});
worksheet.getRange("A1").importData(items, options);
value - 选择器函数,它接受提供给IRange.importData(Object,DataImportOptions) 的源对象,并返回要导入的列。返回 int[] 可按索引选择列,返回 String[]可按名称选择列,返回 Function[] 可提供不带列名的自定义值选择器(在这种情况下, getIncludeColumnsHeader() 必须为false),或返回 AbstractMap.SimpleEntry[] 可提供自定义列名以及值选择器(在这种情况下,getIncludeColumnsHeader() 应为 true;否则,将忽略自定义列名)。 null 使用默认列生成行为。此设置控制当目标区域没有足够单元格容纳所有导入数据时,导入操作的行为。默认值为 InsufficientSpaceHandling.Overwrite。
DataImportOptions options = new DataImportOptions();
InsufficientSpaceHandling handling = options.getInsufficientSpaceHandling();
此设置控制当目标区域没有足够的单元格容纳所有导入数据时导入操作的行为。默认值为 InsufficientSpaceHandling.Overwrite。
DataImportOptions options = new DataImportOptions();
options.setInsufficientSpaceHandling(InsufficientSpaceHandling.Truncate);
value - 数据导入期间要使用的空间不足处理模式。默认值为 InsufficientSpaceHandling.Overwrite。此选项控制导入的表格数据是否在数据行之前写入标题行。默认值为 true。
DataImportOptions options = new DataImportOptions();
boolean includeHeaders = options.getIncludeColumnsHeader();
true;否则为 false。默认值为 true。此选项控制导入的表格数据是否在数据行之前写入标题行。默认值为 true。
DataImportOptions options = new DataImportOptions();
options.setIncludeColumnsHeader(false);
value - 如果导入数据时将列标题作为第一行包含在内,则为 true;否则为 false。默认值为 true。项类型提供者从指定的 Iterable 或数组获取项类型。导入数据时,该类型用于生成列。如果未设置自定义提供者,默认行为是先尝试从数组获取项类型,然后尝试从第一项获取类型。
DataImportOptions options = new DataImportOptions();
options.setItemTypeProvider(source -> Object.class);
Function<Object, Class<?>> provider = options.getItemTypeProvider();
项类型提供者从指定的 Iterable 或数组获取项类型。导入数据时,该类型用于生成列。如果未设置自定义提供者,默认行为是先尝试从数组获取项类型,然后尝试从第一项获取类型。
DataImportOptions options = new DataImportOptions();
options.setItemTypeProvider(source -> Object.class);