ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 使用CsvHelper读取.csv文件

2019-04-25 18:51:25  阅读:464  来源: 互联网

标签:映射 SLSMAN C# SRFile CD CsvHelper csv string


1,先到包管理器下载 安装CsvHelper。

2,创建一个与csv文件字段名称相同的类

 

        public class SurveyInfoModel
        {
            public string DIST_CD { get; set; }
            public string SURVEY_CD { get; set; }            
            public string SLSMAN_CD { get; set; }
            public string SLSMAN_NAME { get; set; }            
        }

 3,按照5,新建的类映射,获取文件中全部记录

//检测原文件编码的形式读入,或默认的
StreamReader SRFile = new StreamReader("D:\Projects\test.csv", FileEncoding.DetectFileEncoding(file) ?? Encoding.Default);
var csv = new CsvReader(SRFile);//把 数据映射到 SurveyInfoModel,返回一个 IEnumerable<T> 对象
var records = csv.GetRecords<SurveyInfoModel>().ToList();
SRFile.Close();  //关闭文件

4,直接循环获取单独的字段

foreach (var r in records)
{
      string  dist_cd = r.DIST_CD;  //直接获取字段
}

 5,CSVHelper是自动根据你的类来自动映射匹配的,如果.csv字段名称不相同,那么可以定义一个映射匹配类

    private sealed class SurveyInfoModelMap : ClassMap<SurveyInfoModel>
    {
            SurveyInfoModelMap() {
                Map(m=>m.DIST_CD).Name("DIST_CD");  //使用文件列名称指定映射
                Map(m => m.SURVEY_CD).Name("SURVEY_CD");
                Map(m => m.SLSMAN_CD).Name("SLSMAN_CD");
                Map(m => m.SLSMAN_NAME).Name("SLSMAN_NAME");
           }
     }

匹配类建好后,只需要在获取IEnumerable<T> 对象前配置映射类,添加后第3步的代码:

//检测原文件编码的形式读入,或默认的
StreamReader SRFile = new StreamReader("D:\Projects\test.csv", FileEncoding.DetectFileEncoding(file) ?? Encoding.Default);
var csv = new CsvReader(SRFile);

csv.Configuration.RegisterClassMap<SurveyInfoModelMap>();  //配置匹配类

//把 数据映射到 SurveyInfoModel,返回一个 IEnumerable<T> 对象
var records = csv.GetRecords<SurveyInfoModel>().ToList();
SRFile.Close();  //关闭文件

 

标签:映射,SLSMAN,C#,SRFile,CD,CsvHelper,csv,string
来源: https://www.cnblogs.com/footmark/p/10770141.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有