实现了 Converter<String[]> 接口,这意味着它定义了如何将 String[] 类型的数据转换为 Excel 表格中的数据,以及如何将 Excel 表格中的数据转换为 String[] 类型的数据。
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.metadata.data.WriteCellData;
public class StringArrayConverter implements Converter<String[]> {
/**
* 告知转换器它支持的 Java 类型是 String[](字符串数组)。
*
* @return 返回 String[].class 表示该转换器支持 String[] 类型。
*/
@Override
public Class<?> supportJavaTypeKey() {
return String[].class;
}
/**
* 这里读的时候会调用
*
* @param context ReadConverterContext
* @return String[] 读取到的数组
*/
@Override
public String[] convertToJavaData(ReadConverterContext<?> context) {
// 从 Excel 单元格读取数据,假设数据以逗号分隔
String cellValue = context.getReadCellData().getStringValue();
if (cellValue == null || cellValue.isEmpty()) {
return new String[0];
}
return cellValue.split(",");
}
/**
* 这里是写的时候会调用
*
* @param context WriteConverterContext
* @return WriteCellData 写入的单元格数据
*/
@Override
public WriteCellData<?> convertToExcelData(WriteConverterContext<String[]> context) {
// 将 String[] 转换为逗号分隔的字符串
String[] value = context.getValue();
if (value == null || value.length == 0) {
return new WriteCellData<>("");
}
String result = String.join(",", value);
return new WriteCellData<>(result);
}
}