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(); //关闭文件

C# 使用CsvHelper读取.csv文件的更多相关文章

  1. C#使用Linq to csv读取.csv文件数据

    前言:今日遇到了一个需要读取CSV文件类型的EXCEL文档数据的问题,原本使用NPOI的解决方案直接读取文档数据,最后失败了,主要是文件的类型版本等信息不兼容导致.其他同事有使用linq to csv ...

  2. sparkR读取csv文件

    sparkR读取csv文件 The general method for creating SparkDataFrames from data sources is read.df. This met ...

  3. VB6.0 读取CSV文件

    最近做了一个Upload文件的需求,文件的格式为CSV,读取文件的方法整理了一下,如下: 1.先写了一个读取CSV文件的Function: '读取CSV文件 '假设传入的参数strFile=C:\Do ...

  4. php读取csv文件,在linux上出现中文读取不到的情况 解决方法

    今,php读取csv文件,在linux上出现中文读取不到的情况,google,后找到解决办法<?phpsetlocale(LC_ALL, 'zh_CN');$row = 1;$handle = ...

  5. 使用univocity-parsers创建和读取csv文件

    import com.univocity.parsers.csv.CsvFormat;import com.univocity.parsers.csv.CsvParser;import com.uni ...

  6. Python 读取csv文件到excel

    朋友问我如何通过python把csv格式的文件另存为xls文件,自己想了想通过读取csv文件然后再保存到xls文件中即可,也许还有其他简单的方法,但这里也为了练习python语法及其他知识,所以采用了 ...

  7. 转换成CSV文件、Word、Excel、PDF等的方法--读取CSV文件的方法

    1. 转换成CSV文件: http://www.dotnetgallery.com/lab/resource93-Export-to-CSV-file-from-Data-Table-in-Aspne ...

  8. java读取CSV文件添加到sqlserver数据库

    在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...

  9. C#:StreamReader读取.CSV文件(转换成DataTable)

    using System.Data; using System.IO; /// <summary> /// Stream读取.csv文件 /// </summary> /// ...

随机推荐

  1. VIM新手福利,配置向

    今天搜索VIM配置的时候,搜到一个神器 https://github.com/amix/vimrc The Ultimate vimrc Over the last 10 years, I have ...

  2. WCF优雅使用 KnownType标记的方法

    [KnownType("DerivedTypes")] [DataContract] public abstract class TaskBase { // other class ...

  3. 简述C#中IO的应用

    在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.IO 定义了一系列类.接口. ...

  4. Linux网络相关概念和修改IP地址的方法

    2.1.1  网卡的命名规则 CENTOS6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在CENTOS6之前,网络接口使用连续号码命名: eth0. eth1等,当增加或删除网卡时,名称可能会 ...

  5. SpringMVC与Struts2的主要区别

    区别1: Struts2 的核心是基于一个Filter即StrutsPreparedAndExcuteFilterSpringMvc的核心是基于一个Servlet即DispatcherServlet( ...

  6. java--变量,常量,数据类型的声明及使用

    一.概念: 变量是指内存中的一个存储区域,该区域要有自己的名称(变量名).类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值: 二.变量的使用注意事项: 1.Java中的变量必须声明后 ...

  7. QQ登录的那些坑

    这几天在项目上面实现qq登录的功能,当功能做好后发现,同一个qq号登录之后腾讯返回的openid并不一样....(天啦噜啊~)然后查询文档以及咨询客服才知道注册申请时是有一个固定的套路的(不得不说,如 ...

  8. 利用IDisposable接口构建包含非托管资源对象

    托管资源与非托管资源 在.net中,对象使用的资源分为两种:托管资源与非托管资源.托管资源由CLR进行管理,不需要开发人员去人工进行控制,.NET中托管资源主要指"对象在堆中的内存" ...

  9. iOS----------Xcode 无线调试

    环境要求: 至少Mac OSX 10.12.6 iOS 11 Xcode 9 1. ”自己的工程“ -> windows -> Device and Simulators ,打开设备和模拟 ...

  10. MyBatis学习---逆向工程 Mybatis Generator代码生成

    [目录]