C#使用Linq to csv读取.csv文件数据2_处理含有非列名数据的方法(说明信息等)

  第一篇博客为:http://www.javashuo.com/article/p-yvcddaxr-v.htmlhtml

  本文主要是为了解决上面博客遗留的一个含有不规范数据的一种方法,目前暂时没有从包里发现能够从第N行读取数据方法,可是咱们能够假设一种状况来兼容目前的数据:测试

  

  超级假设:假设Excel全部的数据都是我要收集的数据,无论是否有数据或者是不规范的数据,那么我能够将接受类的数据类型统一改成string,其余保持不变。spa

  (这里注意经过改造属性的set方法来兼容的方式,本人已经试过,行不通;另外也测试了decimal?可为null的数据类型也不行,不是直接蹦了就是各类报错)code

 

  改造接受类以下:orm

public class WP
        {
            /// <summary>
            /// 管理代码
            /// </summary>
            [CsvColumn(Name = "Administration Code", FieldIndex = 1)]
            public string AdministrationCode { get; set; }
            /// 日期
            /// </summary>
            [CsvColumn(Name = "Date", FieldIndex = 4)]
            public string Date { get; set; }
            /// <summary>
            /// 支付金额
            /// </summary>
            [CsvColumn(Name = "Amount", FieldIndex = 8)]
            public string Amount { get; set; }
        }

  帮助类略做修改:htm

  

public class CSVHelper
    {
        public static List<T> Read<T>(string path, CsvFileDescription fileDescription) where T : class, new()
        {
            CsvContext _csv = new CsvContext();
            return _csv.Read<T>(path, fileDescription).ToList();
        }
        public static List<T> Read<T>(string path) where T : class, new()
        {
            CsvContext _csv = new CsvContext();
            CsvFileDescription _fileDescription = new CsvFileDescription()
            {
                //(默认)数据分隔符(默认“,”)
                SeparatorChar = ',',
                //(由true改成false,当成数据处理)首列数据是否含有列名
                FirstLineHasColumnNames = false,
                //是否启用CsvColumn属性标记
                EnforceCsvColumnAttribute = true,
                //是否忽略未知的行
                IgnoreUnknownColumns = true,
                //(移除属性格式化配置)是否启用OutputFormat格式转换数据
                //UseOutputFormatForParsingCsvValue = true,
                //是否启用属性下标读取数据
                UseFieldIndexForReadingData = true
            };
            return _csv.Read<T>(path, _fileDescription).ToList();
        }

    }

 

  总结:上述代码可兼容CSV文件中含有不规范的数据了!不规范数据处理:经过程序的方式本身过滤掉;数据类型转换:再定义一个含有正常类型属性的类,本身转换吧。blog

相关文章
相关标签/搜索