C# 使用CsvHelper讀取.csv文件


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,使用(2)步驟中創建的類,映射獲取文件中全部記錄(類字段必須與csv文件列名相同)

      引用 FileEncoding.DetectFileEncoding(filePathCsv) ,要在在包管理器下載 安裝SimpleHelpers.FileEncoding,或者直接默認 new StreamReader(filePathCsv, Encoding.Default);

//檢測原文件編碼的形式讀入,或默認的
string filePathCsv="D:\Projects\test.csv"; StreamReader SRFile = new StreamReader(filePathCsv, FileEncoding.DetectFileEncoding(filePathCsv) ?? 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,如果.csv列名與類字段名稱不相同,那么可以定義一個映射匹配類,CSVHelper是自動根據你的類來自動映射匹配的

    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> 對象前配置映射匹配類:csv.Configuration.RegisterClassMap<SurveyInfoModelMap>(); 

//檢測原文件編碼的形式讀入,或默認的
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();  //關閉文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM