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

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

 

 

 

 

 

Cookie已死,看Facebook、Google、Apple如何追踪用户 Clay.io基于AWS、Docker、HAProxy等的10X架构打造 经典服务/企业号案例来袭!2014微信开发者大会(深圳)亮点抢先看 移动应用云APICloud宣布完成A轮500万美金融资 从Apache Storm学到的经验教训 【CTO俱乐部走进天津】探讨如何成为技术团队管理者 不容错过!参加MDCC 2014移动开发者大会八个理由 你的钱被洗劫了么!APP安全问题来袭 10大最常见的数据库安全问题 南航微信服务号是如何炼成的? 超40项功能改进,虚幻引擎4.5正式发布! 【工具推荐】ER:可轻松构建一站式AJAX Web应用的开发框架 GraphLab:将大数据分析从理念运用到生产 支持Android 5.0:完全用Ruby的Ruboto框架迎1.2.0更新! 万物互联第一步:采用AllJoyn技术的智能硬件 【专访】敏捷专家何勉:让测试成为拉动组织敏捷实施的力量 Docker与微软合作 支持Windows Server 企业号热问热答——来深圳微信开发者大会聆听一线讲师的实战分享 AngularJS 1.3.0正式发布 超光速发展! 学个痛快!十款不容错过的Swift iOS开源项目 HTML5:助力智能电视生态实现新跃迁 MDCC 2014移动开发者大会公布全部议程 求更密集!Apple Watch SDK将于11月正式开放 【答疑】微信开放平台开发者资质认证 专访Informatica亚太和日本区副总裁Murray Sargant:中国公司正考虑数据资产货币化 Facebook又开源:让iOS应用界面极致流畅的ASDK框架 一周消息树:盘点史上最具毁灭性的软件Bug 微信公众平台设备功能支持个人开发者接入 2014中国移动开发者大调查第三批获奖名单曝光 微信企业号上线,带你看看它的真面目! OpenStack Juno版本发布——支持Spark和NFV 怎么样实现EDIT的从右到左的输出 小弟我最近用C++编程遇到了一个棘手的问题,就是图像的旋转和对比度调整,恳请各位大虾救我! 请问:一台w2k server的服务器安装了exchang sever w2k 如何实现用户自行更改PW。(次服务器在internet上)... 加载位图的问题 DB2 里用SQL建立一个数据库怎么写? 关天条形码 救命啊,我的.net怎么安装不上去啊? IP地址怎么倒着显示? 如何制作象微软网页那样的下拉菜单? 如何给表增加外键? 想下面我声明的pbr该怎么释放? 请问我下载的扩展名为".001"的文件怎样浏览 我的机子上可能出现了病毒,怎么办 如何在apache 中用perl 关于Service Application 程序的调试 有关rs.absolutepage的问题,急! int 如何转换为TCHAR? 8分钟又一首 有谁用JAVA做过机房管理系统? 对csdn页面的一个提议 这样的方法怎么写?送500分 如何判断行尾,\r\n 关于翻译的问题 哪位知道用VB或VC实现WAV转成VOX的控件,或者是直接录音成VOX文件 请教群集服务器上数据库的连接问题 关于拷贝构造函数的问题!! 二两乾天只手擎,谁想到对得上的吗? 在一Bean中,我返回一ResultSet,那么在bean中无法关闭数据库连接了,该怎么办? 继承了TComboBox的WndProc后无法截获WM_CHAR消息为什么? ReleaseDC和DeleteDC有什么区别? TNMFTP编程下载时出现:socket send aborted请指教! 客户端用java,数据库为oracle,如oracle设置为某一字符集,此时在java中得到的字符是什么字符集? ★★★ASP页面奇慢无比,Html很正常。大家救救我吧!★★★ 哪位知道用VB或VC实现WAV转成VOX的控件或源程序,或者是直接录音成VOX文件 有个小程序,我出钱,谁想做? rs.close 与rs=nothing 有什么区别,应该怎样用比较好!! Outlook中便笺字体的设置问题 请问那里有.net的教程下载? delphi6中 Corba data object 中怎么用ado呢? 为什么总不行? 如何在pb中实现控制datawindow每页的打印条数? 哪位知道用VB或VC实现WAV转成VOX的控件或源程序,或者是直接录音成VOX文件 请教高手!恳请指点! 我有个小程序,我出钱,谁有兴趣做下? listview中如何得到当前鼠标所在位置的单元格内容 TRxtrayIcon控件,我搜索了多个地方,可一直没有在dephi上用的,那位有!! Unicode CreateCompatibleDC创建兼容的设备描述表有什么本质的用途? 好久没来了,不知说什么好! 请教:装ORACLE的分区所剩空间太小,能不能让新建的数据库文件保存在别的磁盘分区? 怎样加密文件和文件夹?很急!!! 如何实现StringGrid只有一列为编辑状态,其它列为只读? 光子的能量与动能光子的能量全部是动能么?光子的动量p=根号下(2mEk)=m*c,可以得出Ek=1/2m*c“.这个该怎么解释c"意思就是c的平方 浓度为10%的糖水300克,要把他变成浓度为25%的糖水,需要加糖多少克?如果要列方程,一定要写出过程!最好 若不等式mx^2-mx-1 下列消化液中消化食物是物理性消化的是 A 胰液 B 胃液 C胆汁 D肠液 已知关于x的一元二次方程不等式mx2-(1-m)x+m=0无实数根求m的取值范围 光子的能量的表达式E^2=(pc)^2+m0^2c^4这个式子是怎么得出来的? 假如风有颜色阅读答案sd 现有浓度为20%的糖水300克,要把它变成浓度是40%的糖水,需加糖多少克?要列方程和列式计算两种要列方程和列式计算两种,我不要只有一个答案,我知道答案, 【光子的能量和光子的频率】的表达式是什麽只要表达式 肠液消化什么;胰液消化什么 如果一个光子的能量等于一个电子的静止能量,则该光子的波长为多少 关于不等式|x-1|+|x+2|>a^2+a+1恒成立,则实数a的取值范围是多少 家乡的风 阅读答案 若关于x的一元二次方程x^2-(m-1)x-m=0有两个不相等的实数根,求m的取值范围? 不等式mx^2-2x+m>0对任意的x>0恒成立,则实数m的取值范围 1.下列消化液中哪项消化食物时起的是物理消化.( ).A.肠液 B.胃液 C.胰液 D.胆汁还有一题.2.下列不属于鱼的结构特点与它在水中的捕食相适应的是.( )A.鱼的体色大都腹白色、背部深色使水下 (1)王叔叔要做一个长宽高分别是36厘米,25厘米,4厘米的无盖长方体铁皮水桶,需要用铁皮多少平方分米?小明要给电视机做一个布罩,电视机的长是50厘米,宽是45厘米,高是32厘米,做这布罩需要 怎样将CCD 得到的灰度图像转换成光子数,公式是什么做的是超高分辨率成像中的单分子分析,能够知道光强(灰度值),怎样转换成光子数,求公式, 风中的鸟巢阅读答案 读书 食堂买回4袋面粉,其中3袋每袋25kg,另一袋不足25kg.但不知道比25kg轻还是重,你能用天平称出来吗?至少要称几次才能称出来? 风是什么(阅读答案) 读书究竟有何"用"?008年公布的第五次“全国国民阅读与购买倾向抽样调查”结果显示,中国人的图书阅读率已从1999年的60.4%下降至2007年的34%.2007年,我国人均购书量不足5本,且其中八成是课本教 初2上有关实数的数学题(x乘y)的平方根,可以等于x的平方根乘y的平方根吗? m为何值时,一元二次方程mx^2+(m-1)x+m=0根为正实数 谚语大全哪儿有请问谁有谚语大全 2道, 胰液中的消化酶主要有?如题. 不含消化酶的消化腺是:A,唾液腺B,肠腺C,胃腺D,胆汁 已知△ABC的三边长分别为a,b,c满足 (根号)a-3 + (绝对值)b-4 + c(平方)-10c + 25 = 0,试判断△ABC的形状 光子盒与测不准爱因斯坦提出的光子盒实验中是如何通过相对论的公式推出测不准原理公式的? 胆汁中含有消化酶吗? 能量子大小(光子的能量大小)是什么? 光是如何产生的?如何传播的?光子是什么?非诚勿扰 关于安全方面的警句要短点的 如右图:把19个边长为1厘米的正方体叠成一个立体图形,求这个图形的表面积和体积. 如何储存一个光子并直线发射出去? 胆汁对脂肪的消化是属于哪种.. 如图,将19个棱长为1正方体重叠,求他们所拼成图形的表面积. 灯泡发射多少光子?一灯泡发光功率为2.5瓦,离灯泡1KM处垂直于光线有一个大小为1CM^2的小光屏,1s内约有多少个光子打在光屏上? 计算激光发出的功率用光子能量公式E=hv和E=mc2计算结果一样吗 悲情蝴蝶 小肠有胰液,胆汁,那里分泌的 光子的能量为hv动量的大小为hv/c,如果一个静止的放射性元素的原子核在发生γ衰变时只发出一个γ光子,则衰变后的原子核( )A.仍然静止B.沿着与光子运动方向相同的方向运动C.沿着与光子运 为什么《悲情蝴蝶》里成千上万的蝴蝶会投河自杀?线索:山下愈来愈多的烟囱亦无言.附文一篇:悲情蝴蝶 这年七月,我去秦岭中寻访友人的途中,亲眼目睹了成千上万只蝴蝶投向溪水集体自 肠液和胰液的作用一样吗? 光子的能量 e=hv=mc2对吗?根据光子能量e=hv,和e=mcc,得到hv=mcc .m是光子动质量,v是频率.但在光的多普勒效应中,频率v是可以变化的,那难道说光的动质量也可以变化? 悲情蝴蝶的作者是谁?这年七月,我去秦岭山中寻访友人的途中,亲眼目睹了成千上万只蝴蝶,投向溪水集体自尽的那悲壮惨烈的一幕,惊心动魄的一幕:成千上万只蝴蝶如飞蛾扑火般投入秦岭山 胰液中有胰蛋白酶吗? 已知a,b为正实数,而且a+2b=1,则a/1+b/1的最小值是 悲情的蝴蝶主要讲什么事? 小麦的出粉率是85%,现在要把12吨小麦磨出的面粉装入袋中,每50千克一袋,一共可以装多少袋? 光子的运动质量(光子能量)为什么是hv/c2 而不是hv 呢?v 是频率 用铁皮做一只无盖长方体,长7分米,高4分米.做一个这样的这样的水桶至少需平方米铁皮?这只水桶的体积是多少? 关于名人格言要中国古代的名言 一道数学题:一个长方体油箱,长4分米,宽3分米,里面装满油,一个长方体油箱,长4分米,宽3分米,里面装满油,如果把这些煤油倒入底面直径为4分米,高12分米的圆桶里,煤油深多少分米? 一道数学题,已知1+a^2=2b^2,求a-2b 的绝对值的最小值,并求此时a,b的值一道数学题,已知1+a^2=2b^2,求a-2b的绝对值的最小值,并求此时a,b的值 这个光子动能公式中c是什么,右下角那个是波长吗? 一个长和宽都是4分米,高是6.28分米的长方体油箱盛满了油.如果把里面的油倒进一个底面半径是2分米的圆柱半径是2分米的圆柱的圆柱形空桶内,油深多少分米? 光量子公式E=hv.那个v读什么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘