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

如何使用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();

 

 

 

 

 

not(expr)-JQuery API not(el)-JQuery API parent(expr)-JQuery API parents(expr)-JQuery API prev(expr)-JQuery API siblings(expr)-JQuery API Events事件-JQuery API bind(type,data,fn)-JQuery API blur(fn) -JQuery API blur() -JQuery API change(fn) -JQuery API click(fn)-JQuery API click()-JQuery API dblclick(fn) -JQuery API error(fn) -JQuery API focus(fn)-JQuery API focus() -JQuery API hover(over,out)-JQuery API keydown(fn) -JQuery API keypress(fn)-JQuery API keyup(fn)-JQuery API load(fn)-JQuery API mousedown(fn)-JQuery API mousemove(fn)-JQuery API mouseout(fn)-JQuery API mouseover(fn)-JQuery API mouseup(fn)-JQuery API one(type,data,fn)-JQuery API ready(fn)-JQuery API resize(fn)-JQuery API scroll(fn)-JQuery API 关于DBGrid中控制日期型字段的输入!在线等待! javascript 控制Applet 求助 关于Authorware背景音乐的一个问题 如何做流媒体? 请问除了vc++和builder c++还有什么其他的编译器啊?面向windows编程的 请大家帮忙看看这个保存注册表的小程序错在哪里 请问fso可以修改目录名吗? 一个表单里面有两个select下拉菜单选择项,一个是父类项一个是他的子类项,每一项都从库里提出来,问每选择一个父类项,下面的下拉菜单的子类 请问如此时间按纽是怎么做的?高手帮忙? 谁有比较好的数字信号处理的界面框架,给我发送一个 smart attribute check(failed) 200分都给你!谁能列出最好的几本算法与数据结构书,并提供下载地址? 菜鸟问题 各位高手,这个复制的存储过程要怎样写啊? 怎么把自己的图片做成asp的底板图? 请问在DELPHI中编程怎样打开WORD,EXCEL,。TXT文件并使他们可见?(谢谢) 小女子问一个很小很小的问题。举手之劳 好不容易才找到ACTIVE SKIN4.27的破解机 JDK文档 1000分都给你!谁能列出最好的几本算法与数据结构书,并提供下载地址? 请教一个问题~~~~~~!在线等~! 1000分都给你!谁能列出最好的几本算法与数据结构书,并提供下载地址? 1000分都给你!谁能列出最好的几本算法与数据结构书,并提供下载地址? 请问sql server 2000数据库 的unicode->big5如何转换? 倒分揭露 vc我自建了一个子窗体类,点击主窗体时显示,怎么做啊? 难道我的word文档全都废了吗?? 帮帮忙!一个小问题!呵呵! "自助建站系统"到底能不能实现真正的二级域名、独立域名? 请看看我的代码有什么问题 如何将一个OLE对象转换为位图(注:不要截屏的方式) 在olecontainer里面调出的excel文档,如何使之不可编辑。 急救啊!这个字体怎么设置? 请问在jcreator下能不能编译成exe啊? small_wei进来领分! 初学这样的,觉得是很简单的思路,但找不出错误,有经验的帮忙看看 if a sql syntan can succeed in sql but asp... GDI+的问题 谁有FLASH的注册码,给个,谢谢 怎样用js写一个终止程序,类似asp的response.end 求教:学习MFC文件系统-针对一段代码的3个初学者问题 如何使98一开机就运行屏保!!!急!!!来者有分!帮忙了!!!!! 怪问题 <了解Struts1.1 > 我刚看到的一篇好文章,贴出来,大家共享 dayday up (: 如何驱动8139网卡(笔记本) interbase能与VC结合吗?另外想问有些软件与interbase一起打包安装,如何实现的呢? Lotus——你在哪里? 网络编程中遇到的几个问题(求助) 在java中调用javac.exe 紧急在线等待,求助!!!!! 我是新来的,很多都不懂!也没有朋友,有谁能和我做朋友么? 谁能把从2011年7月1日至8月14日新闻都列出来啊(作业需求,十万火急)最少5行还有8月14至8月25的 值得做某事(含deserve) 这个怎么求导? 如图所示是两个声音在同一个示波器上显示出来的波形,从图可知:[ ]的响度大,:[ ]如图所示是两个声音在同一个示波器上显示出来的波形.从图形可知:_____的响度大,____的音调高,这两个声音在 吸收无机盐的主要器官是根毛. 陈独秀李大钊没有参加党的第一次全国代表大会,为何有如此崇高地位? I care a lot about you咩意思 分子是人们观察物质分割现象时运用逻辑推理建立的一个科学概念,当时只是一种猜想.这句话是否正确? 为什么文化越高的人,品德会越低呢? take advantage 为什么有这么多种答案啊…求有准的… 求定积分S 0到a x(a^2-x^2)^1/2dx (a>0) 要求是换元法和凑微分法 梦溪笔谈是什么? 练团什么意思 x^4+x^2+1/x^4+1/x^2=4 解X 换元法如题.式子见图:谢谢.没看出和换元有什么关系呢…… 单反的镜头15-55mm和135mm和200mm有什么不同啊?小白求科普 关于秋思的作文 对定积分∫(x-1)∧2dx(积分区域为0到2)用换元法t=(x-1)∧2时,t的积分区域是不是换元时必须要分单调区间? 镜头的18-135MM、18-200MM是什么意思? 谁能把《秋思》改成短文把《秋思》这首诗改成短文300字以上! virtue与merit都表示美德,两词有什么区别? 18 135mm镜头怎么样 把秋思写成作文马上就要 关于《梦溪笔谈》关于梦溪笔谈各种不同的外国人的评价 为何中共一大陈独秀和李大钊两位重要人物都不参加呢? strength 与advantage有什么具体区别? in deed 和indeed有什么区别?分的和合的有区别么? 集宁区乌兰小学六年级统考成绩怎么查 advance和advantage的区别都做名词的时候有什么区别 比较《书愤》《蜀相》说说它们在歌颂诸葛亮的功绩,抒发个人感情和表现手法等方面有哪些不同 直棱柱的两个底面是形状 的 . 梦溪笔谈怎么样 用第二换元法求下面两个积分最好把答案写在纸上,再拍下来上传 literary savant是什么意思 我们如何保护我们的文化瑰宝 我家和他家是邻居,他是比较内向的那种,他妈说把我介绍给他,以前看见了还会和我打招呼,自从这件事后他看到我埋头就走,如果说是因为他不中意我,可他妈又第二次来找我谈, Literary appreciation 翻译成中文, 5’10 tall 是多高人5’10'' 换算成咱们的高度 一米几 如果a大于b,ab等于1.求证,a²加b²大于或等于2倍根号2乘(a减b) literary figures 什么意思? 五点计数法 在计数时,正好在边线上的怎么计 财政局、国税局、地税局哪个更好一点(在县里面) literacy啥意思?和literary有关系吗?英语 一般在什么情况使用 显微计数法 说的清楚一点 不要随便粘来点东西 就是没有百度到才来请教大家 月加三撇念啥? 辩论:崇拜明星好不好?急用,我是反方4辩.不要灌水! 请教 谁知道高中生物里的一些计数法啊 x^2+x+1=2/x^2+x (用换元法) 水生生物学属于理学还是农学 一条多肽链中有氨基酸1000个 则作为合成该多肽链模板的信使RNA和用来转录该信使RNA的基因分子分别至少有碱基多少个 某基因有192个脱氧核苷酸 其控制合成的多肽应脱掉的水分子数为?已知 那撇什么意思? 综合实践活动教案包含哪些? 李大钊和陈独秀在建党作用差不多.为什么在一大上陈为中央书记,而李好像什么都没?为什么? 娘西撇什么意思 农学能不能转理学 陈独秀与李大钊因与共产国际什么分歧而没有参加一大? 请帮我检查一下我的求导过程里面哪里有错误.如图. literary 中共一大选举的中央局的书记是谁?1 李大钊 2 毛泽东 3 陈独秀 4 董必武 1、举个例子 f没有导数 g没有导数,f(g(x))有导数2、 √x的导数是1/(2√x) 怎么证明? 帮忙找个道德榜样要现在在世的,起码要有点名气吧,不能虚构的.再举出一个他的故事或例子 律师称斯诺登将从11月起在俄大型网站外交部:“10·28”暴力恐怖袭击是尼日尔沙漠车抛锚 90移民干渴而死日媒:安倍将于11月中旬出访柬埔寨和商务部发布欧盟太阳能级多晶硅“双反”11月1日起 杭州地铁1号线周末末班增强依法履职能力 省十二届人大代表在中方要求美方对其驻华使领馆设监听点报广东吊销新快报陈永洲记者证 责成报社外交部:要求美就在京沪等地设监听点作外交部:个别人在中俄关系中间打楔子不尼日尔沙漠一移民车抛锚 现场发现92背景资料:《马斯特里赫特条约》约旦举行中国电影周 构筑文化交流“新长春一在建高架桥发生局部坍塌(组图)北京市气象台发布霾黄色预警 空气污染国资委:国企改革方案争取三中全会后尽外交部:中俄关系发展不受任何外部势力中东部地区将迎大范围降水 罗莎将带来国防部:中印边防合作协议旨在有效维护律师称斯诺登将从11月起在俄大型网站挖槽内涵图 :这些图好有内涵!一般人董明珠:雷军你超过我,有什么面子吗?散户如何解决股票卖了才大涨?山西省属七大煤炭集团5大原任一把手均戴上这个玩Xbox射击游戏,恐怕就差深交所公开谴责政泉控股和北大方正,争瑞士蒙德勒:古色古香 葡萄酒的天堂百亿重组遭否决,成飞集成再成“洪都惨5款烧脑成人玩具,90%的人都会抓狂寻一位爱书法的人做朋友吧!普吉岛纳卡岛:私密性与环境更胜普吉一这两年在北京什么多了,什么少了?有时候,错过了就是一辈子画院如盲肠,应该割掉Oculus Rift发布,虚拟正式看完这篇文章以后,你需要重新评估一下玫瑰巧克力糖果鸡蛋菠菜卷饼央行官员:互联网金融或带来利率全面下长豆炒肉网贷一周热点 Lending Clu
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘