当前位置: 首页 > news >正文

视频分享网站模板网站开发需求单

视频分享网站模板,网站开发需求单,建筑网站设计,宁波超值关键词优化总体设计Magicodes.IE是一个导入导出通用库#xff0c;支持Dto导入导出以及动态导出#xff0c;支持Excel、Word、Pdf、Csv和Html。在本篇教程#xff0c;笔者将讲述如何使用Magicodes.IE的导入导出筛选器。在开始之前#xff0c;我们需要先了解Magicodes.IE目前支持的筛选… 总体设计Magicodes.IE是一个导入导出通用库支持Dto导入导出以及动态导出支持Excel、Word、Pdf、Csv和Html。在本篇教程笔者将讲述如何使用Magicodes.IE的导入导出筛选器。在开始之前我们需要先了解Magicodes.IE目前支持的筛选器接口说明IImportResultFilter导入结果筛选器可以修改导入结果包括验证错误信息比如动态修改错误标注IImportHeaderFilter导入列头筛选器可以修改列名、值映射集合等等IExporterHeaderFilter导出列头筛选器可以修改列头、索引、值映射等等导入结果筛选器IImportResultFilter的使用导入结果筛选器可以修改导入结果包括验证错误信息比如动态修改错误标注非常适合对导入数据和错误验证内容进行二次动态加工比如加入自定义校验逻辑、验证消息多语言翻译等等。接下来我们开始实战准备导入文件如下图所示我们准备了如下Excel导入文件下载地址https://github.com/dotnetcore/Magicodes.IE/blob/master/src/Magicodes.ExporterAndImporter.Tests/TestFiles/Errors/%E6%95%B0%E6%8D%AE%E9%94%99%E8%AF%AF.xlsx准备DtoExcel准备好了我们需要准备一个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 nameT/typeparam/// param nameimportResult/param/// returns/returnspublic ImportResultT FilterT(ImportResultT importResult) where T : class, new(){var errorRows new Listint(){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.ImportImportResultFilterDataDto1(filePath, labelingFilePath);} 打开上述代码所示的标注文件路径就可以看到验证提示被我们改成了英文导入列头筛选器IImportHeaderFilter的使用导入列头筛选器可以修改列名、验证属性、值映射集合等等非常适合动态修改列名、验证逻辑、值映射等等。和前面的一样我们先得准备一个导入文件。准备导入文件下载地址https://github.com/dotnetcore/Magicodes.IE/blob/master/src/Magicodes.ExporterAndImporter.Tests/TestFiles/Import/%E5%AF%BC%E5%85%A5%E5%88%97%E5%A4%B4%E7%AD%9B%E9%80%89%E5%99%A8%E6%B5%8B%E8%AF%95.xlsx准备Dto/// summary/// 导入学生数据Dto/// IsLabelingError是否标注数据错误/// /summary[ExcelImporter(IsLabelingError true, ImportHeaderFilter typeof(ImportHeaderFilterTest))]public class ImportHeaderFilterDataDto1{/// summary/// 姓名/// /summary[ImporterHeader(Name 姓名, Author 雪雁)][Required(ErrorMessage 学生姓名不能为空)][MaxLength(50, ErrorMessage 名称字数超出最大限制,请修改!)]public string Name { get; set; }/// summary/// 性别/// /summary[ImporterHeader(Name 性别)][Required(ErrorMessage 性别不能为空)]public Genders Gender { get; set; }} 如上述代码所示我们通过ImportHeaderFilter属性指定了列头筛选器类型。接下来我们需要完成相关实现创建类并实现接口IImportHeaderFilter/// summary/// 导入列头筛选器测试/// 1测试修改列头/// 2测试修改值映射/// /summarypublic class ImportHeaderFilterTest : IImportHeaderFilter{public ListImporterHeaderInfo Filter(ListImporterHeaderInfo importerHeaderInfos){foreach (var item in importerHeaderInfos){if (item.PropertyName Name){item.Header.Name Student;}else if (item.PropertyName Gender){item.MappingValues new Dictionarystring, dynamic(){{男,0 },{女,1 }};}}return importerHeaderInfos;}} 通过上述代码我们编写了一些测试实现了IImportHeaderFilter将属性名称为“Name”的列的列头修改为“Student”将属性名称为“Gender”的列的列映射改为男女映射接下来我们继续编写导入逻辑 public async Task ImportHeaderFilter_Test(){var filePath Path.Combine(Directory.GetCurrentDirectory(), TestFiles, Import, 导入列头筛选器测试.xlsx);var import await Importer.ImportImportHeaderFilterDataDto1(filePath);} 如下图所示我们成功的将Excel列名为“Student”的列导入到了Dto的Name属性同时将男女转换为了枚举导出列头筛选器IExporterHeaderFilter的使用导出列头筛选器可以修改列头、索引、值映射非常适合动态修改导出逻辑比如列头的中英转换值映射动态逻辑等等。接下来我们一起来实战准备Dto并编写导出代码[Exporter(Name 测试, TableStyle Light10, ExporterHeaderFilter typeof(TestExporterHeaderFilter1))]public class ExporterHeaderFilterTestData1{[ExporterHeader(DisplayName 加粗文本, IsBold true)]public string Text { get; set; }[ExporterHeader(DisplayName 普通文本)] public string Text2 { get; set; }[ExporterHeader(DisplayName 忽略, IsIgnore true)]public string Text3 { get; set; }[ExporterHeader(DisplayName 数值, Format #,##0)]public decimal Number { get; set; }[ExporterHeader(DisplayName 名称, IsAutoFit true)]public string Name { get; set; }} 如上述Dto代码所示我们通过导出特性Exporter的ExporterHeaderFilter属性指定了导出列头筛选器。实现筛选器IExporterHeaderFilterpublic class TestExporterHeaderFilter1 : IExporterHeaderFilter{/// summary/// 表头筛选器修改名称/// /summary/// param nameexporterHeaderInfo/param/// returns/returnspublic ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo){if (exporterHeaderInfo.DisplayName.Equals(名称)){exporterHeaderInfo.DisplayName name;}return exporterHeaderInfo;}} 如上述代码所示我们实现了导出筛选器并将显示名为“名称”的列修改为了“name”。编写导出逻辑//导出IExporter exporter new ExcelExporter();//使用GenFu生成测试数据var data1 GenFu.GenFu.ListOfExporterHeaderFilterTestData1();var result await exporter.Export(filePath, data1); 使用上述代码导出后我们来验证导出结果是不是So easy呢当然我们还可以做一些其他的事情比如修改忽略列public class TestExporterHeaderFilter2 : IExporterHeaderFilter{/// summary/// 表头筛选器修改忽略列/// /summary/// param nameexporterHeaderInfo/param/// returns/returnspublic ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo){if (exporterHeaderInfo.ExporterHeaderAttribute.IsIgnore){exporterHeaderInfo.ExporterHeaderAttribute.IsIgnore false;}return exporterHeaderInfo;}} 如何使用容器注入筛选器筛选器主要是为了满足大家能够在导入导出时支持动态处理比如值映射等等。但是通过特性指定筛选器的话那么如何支持依赖注入呢不要慌针对这个场景我们也有考虑。在ASP.NET Core的启动类StartUp注册容器参考代码如下public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {AppDependencyResolver.Init(app.ApplicationServices);//添加注入关系services.AddSingletonIImportResultFilter, ImportResultFilterTest();services.AddSingletonIImportHeaderFilter, ImportHeaderFilterTest();services.AddSingletonIExporterHeaderFilter, TestExporterHeaderFilter1(); } 然后就尽情使用吧。值得注意的是注入的筛选器类型的优先级高于特性指定的筛选器类型也就是当两者并存时优先会使用注入的筛选器注入的筛选器是全局的当注入多种类型的筛选器时均会执行接下来我们还会支持更多细节控制如果某个逻辑需要禁用所有筛选器请参考下面部分此功能需要2.4.0-beta2或以上版本才支持使用IsDisableAllFilter属性禁用所有的筛选器如果某段导入导出需要禁用所有的筛选器我们该如何处理仅需将IsDisableAllFilter设置为true即可。导入导出特性均已支持。转载是一种动力 分享是一种美德如果喜欢作者的文章请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。文档官网docs.xin-lai.comQQ群编程交流群85318032 产品交流群897857351
http://www.zqtcl.cn/news/805086/

相关文章:

  • 网站实现语言转换技术上该怎么做免费下载网页模板
  • 云南网站建设专业品牌网站建设电子商务
  • 保健食品东莞网站建设莱芜金点子信息港交友
  • 小程序视频网站开发网站开发项目预算表
  • 邢台手机网站建设价格iis 手机网站
  • 网站开发流程三大部分微信学校网站模板
  • 网站推荐正能量专业做网站多少钱
  • 网站界面设计总结淘客手机端网站建设
  • 天津网站建设zhy88宁波企业黄页公司黄页
  • 个人网站课程设计报告app免费制作软件中文版
  • 品牌建设网站规划盛唐网站建设
  • 商城网站系统建站平台上建设的网站可以融资吗
  • 怎么查网站空间wordpress快速入门
  • 长沙 网站运营德国服务器网站
  • 有动效网站建网站的书籍
  • 网站模版更新公告2023年ppt模板免费
  • 广饶网站建设北京建设工程监督网站
  • 长沙网站建设电话郑州网站空间
  • 做网站是怎样赚钱的网页制作工具按其制作方式有
  • 网站地图在哪里展现电子商务网站需要做那些准备工作
  • 深圳网站设计收费标准中端网站建设公司
  • 有关wordpress教学的网站wordpress返回旧版
  • php做网站弊端wordpress强大播放器
  • 怎么直接做免费网站wordpress如何自建站
  • 中国建设银行建银购网站金堂企业网站建设
  • 手机微网站开发的目的和意义温州公司网站开发
  • 除了外链 还有什么办法使网站提高排名网站建设珠海 新盈科技
  • 几分钟弄清楚php做网站中国风景摄影网
  • 卡片式网站网页设计公司的市场评估
  • 网站开发的感想wordpress水煮鱼