关于数据导入:csvHelper利器

  • binGe博客
  • 工具使用
  • 2022-1-21 11:08:26
  • 人已阅读
简介以前我们将Excel的数据导入数据库总要进行字段的对比与验证,字段名称和数量是否与实体一致,现在可以无视这一条了,利用csvHelper利器的RegisterClassMap过滤器即可实现,找不到的字段一律不映射~~~

通过以下2方法得到数据List对象,然后使用框架的OperateMany方法即可完成批量数据事务提交,是不是很nice?

需要安装csvHelper包,程序包控制台运行:Install-Package CsvHelper 即可

温馨提示:Jabil快速开发框架已经集成此方法,至于是否需要此功能那是业务需求问题了

 /// <summary>
        /// 将csv表格数据填充到List,仅映射部分字段提交
        /// </summary>
        /// <param name="filePath">csv文件路径</param>
        /// <returns></returns>
        public static List<test2> GetSheetToListByMapFields(string filePath)
        {
            //csvHelper:其他方法可参考 https://joshclose.github.io/CsvHelper/examples/writing/write-class-objects/
            try {
                using (var reader = new StreamReader(filePath))
                using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) {
                    csv.Context.RegisterClassMap<test2CustomClassMap>();
                    var records = csv.GetRecords<test2>();
                    return records.ToList();
                }
            }
            catch (Exception ex) {
                LogHelper.ErrorLog(ex.Message, "csvHelper导入test2ListByMapFields报错");
                return new List<test2>();
            }
        }

        /// <summary>
        /// 映射部分字段
        /// </summary>
        public sealed class test2CustomClassMap : CsvHelper.Configuration.ClassMap<test2>
        {
            public test2CustomClassMap()
            {
                //本类里至少要有一个Map
                Map(m => m.UserName);
                Map(m => m.UserPwd);
                Map(m => m.Id);

                //匹配不上or找不到的字段将自动被忽略Ignore
                //Map(m => m.OpDate).Ignore();
                //Map(m => m.Id).Ignore();
                //Map(m => m.OpId).Ignore();
                //Map(m => m.UserNo).Ignore();
                //Map(m => m.UserCardNo).Ignore();
                //Map(m => m.UpdateId).Ignore();
                //Map(m => m.UpdateDate).Ignore();
                //Map(m => m.IsDel).Ignore();
            }
        }

 

文章评论

评论
  • 消灭零回复
Top