1. 实现ObjectConverter
package com.tophant.cloud.common.excel.converters;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.lang.reflect.Type;
/**
* 对象转换器
* 支持转换字段类型为自定义实体,List<实体>,List<String>,Map<String,实体>等
*
* @author wan.fei
* @date 2023/08/26
*/
public class ObjectConverter implements Converter<Object> {
@Override
public Class<?> supportJavaTypeKey() {
return Object.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
/**
* 转换从excel中读取的数据为ExcelVO中定义的字段类型(自定义实体,List<实体>,List<String>,Map<String,实体>等)
*
* @param cellData 单元格数据
* @param contentProperty 内容属性
* @param globalConfiguration 全局配置
* @return {@link Object}
* @throws Exception 异常
*/
@Override
public Object convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
String stringValue = cellData.getStringValue();
// 获取定义的实体字段的实际类型,包括泛型参数信息
Type genericType = contentProperty.getField().getGenericType();
return JSONUtil.toBean(stringValue, genericType, false);
}
/**
* 转换数据为json字符串,写入到excel文件
*
* @param value 价值
* @param contentProperty 内容属性
* @param globalConfiguration 全局配置
* @return {@link WriteCellData}<{@link ?}>
* @throws Exception 异常
*/
@Override
public WriteCellData<?> convertToExcelData(Object value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
String json = JSONUtil.toJsonStr(value);
return new WriteCellData<String>(json);
}
}
2. 使用
3. 测试
3.1 导出excel
手动添加一些数据
导出
写入excel
转换成功文章来源:https://www.toymoban.com/news/detail-680054.html
3.2 导入excel
将上面生成的excel
文件导入
读取excel
数据并转换成功文章来源地址https://www.toymoban.com/news/detail-680054.html
到了这里,关于EasyExcel自定义字段对象转换器支持转换实体和集合实体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!