C#使用Linq to csv读取.csv文件数据2_处理含有非列名数据的方法(说明信息等)
第一篇博客为:https://www.cnblogs.com/lxhbky/p/11884474.html
本文主要是为了解决上面博客遗留的一个含有不规范数据的一种方法,目前暂时没有从包里发现可以从第N行读取数据方法,但是我们可以假设一种情况来兼容目前的数据:
超级假设:假设Excel所有的数据都是我要收集的数据,不管是否有数据或者是不规范的数据,那么我可以将接受类的数据类型统一改为string,其他保持不变。
(这里注意通过改造属性的set方法来兼容的方式,本人已经试过,行不通;另外也测试了decimal?可为null的数据类型也不行,不是直接蹦了就是各种报错)
改造接受类如下:
- public class WP
- {
- /// <summary>
- /// 管理代码
- /// </summary>
- [CsvColumn(Name = "Administration Code", FieldIndex = )]
- public string AdministrationCode { get; set; }
- /// 日期
- /// </summary>
- [CsvColumn(Name = "Date", FieldIndex = )]
- public string Date { get; set; }
- /// <summary>
- /// 支付金额
- /// </summary>
- [CsvColumn(Name = "Amount", FieldIndex = )]
- public string Amount { get; set; }
- }
帮助类略作修改:
- 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文件中含有不规范的数据了!不规范数据处理:通过程序的方式自己过滤掉;数据类型转换:再定义一个含有正常类型属性的类,自己转换吧。
C#使用Linq to csv读取.csv文件数据2_处理含有非列名数据的方法(说明信息等)的更多相关文章
- spark.read.csv读取CSV文件 ArrayIndexOutOfBoundsException报错
通过 spark.read.csv读取CSV文件时,遇到 到 ArrayIndexOutOfBoundsException报错,初步判断是缺少参数导致,放百度看看,没找引起问题相关的参数. 第一个看到 ...
- 读取xml文件转成List<T>对象的两种方法(附源码)
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...
- JAVA读取XML文件并解析获取元素、属性值、子元素信息
JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取 InputStream DocumentBuilderFactory Element Node 前言 最 ...
- C#使用Linq to csv读取.csv文件数据
前言:今日遇到了一个需要读取CSV文件类型的EXCEL文档数据的问题,原本使用NPOI的解决方案直接读取文档数据,最后失败了,主要是文件的类型版本等信息不兼容导致.其他同事有使用linq to csv ...
- (转) 读取xml文件转成List<T>对象的两种方法
读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法,加上自己知道的另一种实现方法. 就以一个简单的xml做例子. xml格 ...
- 大数据学习day20-----spark03-----RDD编程实战案例(1 计算订单分类成交金额,2 将订单信息关联分类信息,并将这些数据存入Hbase中,3 使用Spark读取日志文件,根据Ip地址,查询地址对应的位置信息
1 RDD编程实战案例一 数据样例 字段说明: 其中cid中1代表手机,2代表家具,3代表服装 1.1 计算订单分类成交金额 需求:在给定的订单数据,根据订单的分类ID进行聚合,然后管理订单分类名称, ...
- Linq to xml 读取xml文件或xml字符串
XMLFile1.xml: XDocument Contacts = XDocument.Load("XMLFile1.xml"); //XElement Contacts = X ...
- Android读取Assert文件夹下txt文本并变为String的方法
使用场景,在assert文件夹下 有些文本文件,我们需要通过工具类读取出来,然后放到String字符串中,我们该如何操作呢: 直接上代码: 使用方法: MyActivity.readAssertRes ...
- matlab读取csv文件数据并绘图
circle.m(画二维圆的函数) %该函数是画二维圆圈,输入圆心坐标和半径%rectangle()函数参数‘linewidth’修饰曲线的宽度%'edgecolor','r',edgecolor表示 ...
随机推荐
- 【Java】Java中的final关键字和static
0.概述 final关键字表示是不可变的: 下面分别从属性(字段).方法.类中进行说明: 1.属性(or字段),表示常量 final声明在属性(or字段)中,表示常量,有两种初始化方法,1是在声明时直 ...
- http://t.cn/xxxxx的短链接如何生成?
var convertStr = encodeURIComponent(urlStr); //转换的原链接可能存在"&"这样的特殊符号,导致原链接的某些字段会被当做ajax ...
- PHP fsockopen受服务器KeepAlive影响的解决
在开发过程中常常遇到这样的需求,模拟浏览器访问某接口,并获取返回数据.我们比较常使用的方法是fsockopen与接口建立连接,然后发出指令,然后通过fgets接受返回值. 但是我们发现,通过PHP模拟 ...
- ThreadLocal 源码解读
一.引入 public class Thread implements Runnable { /* 前面略 */ /* ThreadLocal values pertaining to this th ...
- 输入URL按下enter键后发生的事
输入URL按下enter键后浏览器和服务器各自发生的事. 浏览器 1.用户在浏览器中输入URL地址 2.浏览器解析用户输入的URL地址=>域名+端口 3.浏览器检查本地缓存中是否存在这个域名=& ...
- AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨
近期,国际著名咨询公司Gartner 在一份研究报告中将 "AI-Driven Development" 列为 2019 年的 Top 10 Strategic Technolog ...
- Python如何爬取实时变化的WebSocket数据
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- Zabbix与ELK整合实现对日志数据的实时监控
4.2.zabbix平台配置日志告警 一. ELK与zabbix有什么关系? ELK大家应该比较熟悉了,zabbix应该也不陌生,那么将ELK和zabbix放到一起的话,可能大家就有疑问了?这两个放到 ...
- jenkins+gitlab+webhook实现自动发布
实验环境 Jenkins:192.168.1.15 Gitlab:192.168.1.14 一.Jenkins配置 1:安装gitlab hook plugin插件 2:新建一个job 3 ...
- typeof 与 instanceof之间的区别
JS中会使用typeof 和 instanceof来判断一个变量是否为空或者是什么类型的. ES6规范中有7种数据类型,分别是基本类型和引用类型两大类 基本类型(简单类型.原始类型):String.N ...