用插件携带的配置来处理,使用IImportResultFilter来解决,自行进行过滤
导入结果筛选器可以修改导入结果包括验证错误信息(比如动态修改错误标注),非常适合对导入数据和错误验证内容进行二次动态加工,比如加入自定义校验逻辑、验证消息多语言翻译等等。
导入结果筛选器(IImportResultFilter)的使用
准备Dto
Excel准备好了,我们需要准备一个Dto:
[ExcelImporter(ImportResultFilter = typeof(ImportResultFilterTest), IsLabelingError = true)]
public class ImportResultFilterDataDto1
{
/// <summary>
/// 产品名称
/// </summary>
[ImporterHeader(Name = "产品名称")]
public string Name { get; set; }
/// <summary>
/// 产品代码
/// 长度验证
/// 重复验证
/// </summary>
[ImporterHeader(Name = "产品代码", Description = "最大长度为20", AutoTrim = false, IsAllowRepeat = false)]
public string Code { get; set; }
}
如上述代码所示,我们创建了名为“ImportResultFilterDataDto1”的Dto,使用ExcelImporter特性中的ImportResultFilter属性指定了导入结果筛选器的类型。
创建类并实现接口IImportResultFilter
接下来我们就创建一个类并实现IImportResultFilter接口:
public class ImportResultFilterTest : IImportResultFilter
{
/// <summary>
/// 本示例修改数据错误验证结果,可用于多语言等场景
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="importResult"></param>
/// <returns></returns>
public ImportResult<T> Filter<T>(ImportResult<T> importResult) where T : class, new()
{
var errorRows = new List<int>()
{
5,6
};
var items = importResult.RowErrors.Where(p => errorRows.Contains(p.RowIndex)).ToList();
for (int i = 0; i < items.Count; i++)
{
for (int j = 0; j < items[i].FieldErrors.Keys.Count; j++)
{
var key = items[i].FieldErrors.Keys.ElementAt(j);
var value = items[i].FieldErrors[key];
items[i].FieldErrors[key] = value?.Replace("存在数据重复,请检查!所在行:", "Duplicate data exists, please check! Where:");
}
}
return importResult;
}
}
如上述代码所示,我们将重复错误的验证提示修改为了“Duplicate data exists, please check! Where”。接下来,我们需要编写导入代码:
public async Task ImportResultFilter_Test()
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Errors", "数据错误.xlsx");
var labelingFilePath = Path.Combine(Directory.GetCurrentDirectory(), $"{nameof(ImportResultFilter_Test)}.xlsx");
var result = await Importer.Import<ImportResultFilterDataDto1>(filePath, labelingFilePath);
}
可以根据自己的定制需求进行验证提醒修改
来自AI:
要将AgICodes.IE导入Excel的报错信息配置为中文,您可以尝试以下步骤:
谢谢回答,不好意思呀,我这边的问题是用https://github.com/dotnetcore/Magicodes.IE这个组件导入excel返回的报错信息
我这边要的net组件这个使用方法。