说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何使用C#读取csv文件

HTML文档下载 WORD文档下载 PDF文档下载
本文提供了一个可以读取CSV的类。

创建CSV读取类CSVReader

 

public class CSVReader{	// 对象定义	private Stream objStream;	private StreamReader objReader;	// 需要添加System.IO.Stream命名空间	public CSVReader(Stream filestream) : this(filestream, null) { }	 public CSVReader(Stream filestream, Encoding enc)	 {		 this.objStream = filestream;		 //check the Pass Stream whether it is readable or not		 if (!filestream.CanRead)		 {			 return;		 }         objReader = (enc != null) ? new StreamReader(filestream, enc) : new StreamReader(filestream);	 }     //解析每行数据     public string[] GetCSVLine()     {         string data = objReader.ReadLine();		 if (data == null) return null;         if (data.Length == 0) return new string[0];		 //System.Collection.Generic use this namespace		 ArrayList result = new ArrayList();		 //解析CSV数据		 ParseCSVData(result, data);         return (string[])result.ToArray(typeof(string));	 }	 private void ParseCSVData(ArrayList result, string data)	 {		 int position = -1;		 while (position < data.Length)			 result.Add(ParseCSVField(ref data, ref position));	 }	 private string ParseCSVField(ref string data, ref int StartSeperatorPos)	 {		 if (StartSeperatorPos == data.Length – 1)		 {			 StartSeperatorPos++;			 return "";		 }         		 int fromPos = StartSeperatorPos + 1;		 if (data[fromPos] == '"')		 {			 int nextSingleQuote = GetSingleQuote(data, fromPos + 1);			 int lines = 1;			 while (nextSingleQuote == -1)			 {                 data = data + "\n" + objReader.ReadLine();			 nextSingleQuote = GetSingleQuote(data, fromPos + 1);			 lines++;			 if (lines > 20)				 throw new Exception("lines overflow: " + data);			 }			 StartSeperatorPos = nextSingleQuote + 1;			 string tempString = data.Substring(fromPos + 1, nextSingleQuote – fromPos – 1);			 tempString = tempString.Replace("'", """);				 return tempString.Replace("\"\"", "\"");		 }         		 int nextComma = data.IndexOf(',', fromPos);		 if (nextComma == -1)		 {			 StartSeperatorPos = data.Length;			 return data.Substring(fromPos);		 }		 else		 {			 StartSeperatorPos = nextComma;			 return data.Substring(fromPos, nextComma – fromPos);		 }	 }	 	 private int GetSingleQuote(string data, int SFrom)	 {		 int i = SFrom – 1;		 while (++i < data.Length)			 if (data[i] == '"')			 {				 if (i < data.Length – 1 && data[i + 1] == '"')				 {					 i++;					 continue;				 }				 else					 return i;			 }			 return -1;	 }}

该类创建好后,按钮的click事件按如下方式处理:

 

if (FileUpload1.PostedFile.FileName == string.Empty){	Label1.Visible = true;	return;}else{	//save the file	//restrict user to upload other file extenstion	string[] FileExt = FileUpload1.FileName.Split('.');	string FileEx = FileExt[FileExt.Length - 1];	if (FileEx.ToLower() == "xls")	{		FileUpload1.SaveAs(Server.MapPath("File//" + FileUpload1.FileName));	}	else	{		Label1.Visible = true;		return;	}}//create object of  previous memtain class CSVReader and pass the streamXLsReader reader = new XLsReader(FileUpload1.PostedFile.InputStream);//get the header from hearstring[] headers = reader.GetXLSine();DataTable dt = new DataTable();//add headers of dara tableforeach (string strHeader in headers)dt.Columns.Add(strHeader);string[] data;while ((data = reader.GetXLSine()) != null)dt.Rows.Add(data);//绑定gridviewGridView1.DataSource = dt;GridView1.DataBind();

 

 

 

 

 

霸主地位再临挑战?Salesforce CEO,我们不只有Oracle LBS应用新星、“司机好助手”微车借力移动互联网,志在打造车主的个人移动门户 新一代IDE Light Table开源:让编程工作更简单 图片应用也能高大上,看Cooliris如何玩转无人机 拥抱Spark,机遇无限——Spark Summit 2013精彩回顾 1月10日:改变世界的iPhone七岁了,你是传奇! 同洲电子推出首款手机操作系统960OS 免费授权使用 如何在Windows 8.1的IE11中打开同步选项卡? 25年老对手评价微软:换CEO可行,但是太迟了 【PPT集萃】十位一线专家分享Spark现状与未来(三) 万元奖品等你拿!2014创客118新年大Party! Firefox OS的2013回顾和2014展望 Strom8 CEO:搞好手游开发,合伙人很重要 2013年Q4全球PC出货量同比下滑6.9% 已连续下滑七个季度 一周消息树:2013年十大产品、图书、公司盘点 专访Wunderlist主设计师Jan Martin:永远不要盲目跟风流行趋势 研发周报:超实用的JavaScript技巧及最佳实践 2013最吃香的技能:Java称霸、Android势头正猛 移动周报:最火原型设计工具盘点 “京东电商云”起航,零售企业及品牌商是重点 教育乃立国之本:教育类开源项目大汇集 Hugo Barra首度谈离开谷歌后在中国工作的感受 对中国赞不绝口 母婴行业最早试水者 优谈宝宝借助轻应用全面布局移动产品线 腾讯云平台部总经理纪顺友:微云将彻底迈过文件传输的门槛 豌豆“荚”油!B轮融资1.2亿美元的豌豆荚 2013年终盘点:10款最精巧的硬件开发板 SquareWear:可替代Lilypad Arduino的开发板 开放数据:2014年最热门的竞争领域 IE11虚拟机免费面向广大开发者 九城搭建的一个以Hadoop为基础的大数据平台 Windows 8复杂性的代价到底有多大? 关于recordset的问题解决方法? 目录选择对话框。 简单问题,界面左边进行树形控制,怎样调用对话框(不是切换视) 在线等候帮助!!! 使用过F1book的朋友请看一下! 怎样让弹出的窗口位于显示屏幕中间的位置。而不是两边。 急,高手请进,如何将sQLserver7备份到局域网中另一台计算机的硬盘上 请高手:怎样改变ListView的表头的颜色,字体. 中国武侠剧一定要的必备情节 安装问题 这不是真的!VC的速度还没有VB快! 兄弟改名了 关于网页的打印(急,200分)? 新操作系统,老编程工具 这样能兼容吗? 记得每天点一点你的竞争对手。 我是一个VC初学者,请问这几句代码是什么意思? 2万元寻人力资源软件 友情链接,我的网站http://fullstrong.myetang.com/ ODBC高手请进,高分送出! 写email地址搜寻类软件,有没有利润? 初级XML的问题 友情链接,我的网站http://fullstrong.myetang.com/ 为什么我的excel文件打不开 请问如何在DataGrid中假如CheckBox控件? 高手帮忙看一下邮件发送的错误提示 IIS问题:如何使web application在iis管理mmc中不可见 2万元寻人力资源管理软件 友情链接,我的网站http://fullstrong.myetang.com/ 使用jdom遇到的莫名其妙的问题(有关Element.getChildren()返回类型?) 运行速度的问题如何解决? 对ISO98版的c++支持最好的编译器是什么(unix\win\dos)? sqlserver网络备份是错误码42000。详情请看。。。 急!!请问如何通过程序检测一个系统中的Office版本(比如:中文版,英文版) 请问有人知道上海伍尔特国际咨询公司的朋友嘛 ? 怎样在信件里面自动添加信息? 2万元寻人力资源管理软件 友情链接,我的网站http://fullstrong.myetang.com/ 有没有人统计过windows有多少个api加上shell呢? 请问:winsock的SendData的调用,在收发email时改如何设置参数 请问gdk和gtk的函数库是怎么按装的? 搞不定了,7456..来回切换窗口状态的问题, 有源码 友情链接,我的网站http://fullstrong.myetang.com/ 请问RTDB(实时数据库和商用数据库的区别) 各位高手,请问在Tomcat下怎么解决中文问题? XML如何实现曲线图、饼图、梯形图的表示? “红萝卜的胳膊白萝卜的腿”谁听过? 问一个语法的问题? 读入文本的回车和换行为什么都没有了 类似HTML为扩展名的有哪几种文件 安装php+Mysql+Apache时出现的一个小问题,请高手指教! 取url中?后参数的javascript函数是什么? CF的声音改成飞虎队后怎么没有无线电的声音了把文件改了后,进入有开始和结束的声音,都是飞虎的,就是没有无线电和手雷的声音.这是为什么呢,怎么样就能有了, 哪个事件标志清朝彻底瓦解? 胶印为什么要用纯净水.润版液和酒精 水什么比例最好? CF改成飞虎队后,为什么没无线电声音? 标志着布雷顿森林体系崩溃的开始的事件是 镁的氧化物是什么 CF改无线电(飞虎队)声音我把声音文件都覆盖了,就是改变了无线电.其他的都改成飞虎队声音.怎么样改无线电啊我把声音文件都覆盖了,就是改不了无线电。其他的都改成飞虎队的声音了 实验室测定空气中氧气含量中,红磷熄灭后没有完全冷却到室温就打开弹簧夹,实验测定结果偏低,原因是什么 镁的氧化物有几种 cf我改成飞虎队的声音 为什么我发出去的无线电没有声音 测定空气里氧气含量的实验探究中如果没等红磷熄灭就打开弹簧夹会有什么后果 水基切削液的配制方法, CF高欣赏问题,为什么我改文件成了飞虎队,最后无线电没声音我没有什么声音没开, 清楚点 中世纪西欧人的书写材料主要是: 请问多少克的碳酸氢钠和多少克的硫酸铝可以产生5升气体? 请想一想阻断噪音的传播可应采取什么方式从声源处控制噪声可以采取什么方式 人认为基督教会推动了中世纪西欧社会的发展,有人却认为基督教会严重阻碍了中世纪西欧社会的发展.你怎样评价西欧中世纪的基督教会?... 美国农业带分布 分封制瓦解的标志是什么?简略点!分封制是在战国时就已经瓦解了 镁橄榄石和蛇纹石是什么关系?镁橄榄石是不是包含了蛇纹石,除了蛇纹石,镁橄榄石还有其他的形态吗? cf无线电声音怎么该中文 井田制与分封制的瓦解井田制与分封制是如何瓦解的?瓦解的原因是什么?春秋战国时频繁的战争和铁器牛耕的使用对其瓦解有无影响?井田制与分封制是同时瓦解的,还是井田制瓦解在先从而导 如何提高水基切削液的润滑性呀? 008年全国人大通过《关于修改的决定》,征收个人所得税的起点从1600元提高到2000元,也就是说,原来月收入超过1600元的部分为全月应纳税所得额,提高到月收入超过2000元的部分为全月应纳税所 生产力发展为什么就能使宗法分封制瓦解 小明,小亮从同一点同时反方向绕环形跑道跑步,小明的速度为am/s,小亮的速度为bm/s,经过ts两人第一次相遇这条环形跑道的周长为多少? 12V,7AH的铅酸电池,接12V,55W的灯泡.理论上可以使用多久? 请问V6和V8发动机究竟是什么意思?和普通发动机的区别是什么? 切削液里添加什么可以增强润滑性?如题. 自行车刹车时闸皮和闸圈之间的磨擦是什么摩擦?如题 、是滑动摩擦还是滚动摩擦?额...这道题是这样的下列几种情况,不属于滑动摩擦的是?A.自行车刹车时,闸皮和闸圈之间的磨擦B.用圆珠 何谓V6,V8,V12发动机?V代表什么? 甲,乙两人从圆形跑道上的同一地点同时相背出发沿跑道跑步,甲的速度为8m/s,乙的速度为am/s,经过1min两人首次相遇,则此跑道的周长为?米,若改为同时同向出发,经过4min两人首次相遇(甲比乙跑 3甲基 2硝基苯甲酸:是由邻二甲苯合成吗?反应式如何? cf无线电消息怎么发 V6,V8引擎指的是什么啊V6,V8是指引擎的什么啊?6或8? 为使杠杆平衡在图B点处画出最小力的方向 刹车时,自行车闸皮和瓦圈之间的摩擦是什么摩擦?自行车闸皮和后轮之间的摩擦呢? 汽车上v6发动机是什么意思? 物理力的功率一个物体从A到B运动,之间有一段路程受到摩擦力,问从A 到B摩擦力的功率是用摩擦力的做的功除以A到B的总时间,还是除以摩擦力作用的时间啊注意,是求从A到B摩擦力的功率 CF中如何发无线电消息 红磷燃烧测定空气里氧气含量的实验 1.装置漏气时 为什么水不足1/5 2.止水夹没夹紧为什么水超过1/5 物理怎么求力的功率? CF里的无线电消息怎么发?本人是个CF菜鸟,想知道别人在CF中无线电消息像是A点集合等这些该怎么发? 为什么.说话和音乐都是声音,有区别 力的功率的单位问题p=w/t=fv 请问其中的单位都怎么转化啊..例如v用m/s 或者 km/s 的时候 P用瓦还是千瓦 t用秒还是用小时啊 ..问的很乱 自行车刹车时收紧闸皮是增大()使闸皮与车轮圈的()变大 小型发电机产生电能储蓄能源(例如蓄电池)怎样瞬间释放 蓄电池 12v 7AH.一个小风扇 12v 0.6AH 可以工作多长时间?怎么算出来的~ 二零零零年十月三十一日,九届全国人大第十八次会议通过的《中华人民共和国国家语言文字法》从哪天起施行很难哦 声和音有什么区别 请问12V 7AH的电池.12V3A的负载能放电多久. 中国有多少文字? 物理中声和音区别 12v 7AH 的蓄电池 20W灯泡能用几小时 为什么cf换成中文的了,但无线电没声音 形声字和音声字有什么区别中文汉字 12V(电池容量为7AH)的摩托车蓄电池输出的电流是多少呢 CF我把外国人男角色把英语音改成中文改完之后,时能听见飞虎队的声音,但无线电听不见?(无线电没调零)除了猎狐者 V6汽车的含义
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘