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

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

 

 

 

 

 

如何从任务栏上隐藏应用程序的按纽?-Delphi资料 如何得到Windows 的temp路径-Delphi资料 如何得到WINDOWS的SYSTEM路径-Delphi资料 如何得到上一个激活的组件-Delphi资料 如何得到系统目录-Delphi资料 如何得到执行程序的当前路径-Delphi资料 如何访问一个进程的内存空间-Delphi资料 如何关CD机的门?-Delphi资料 如何关闭外部开启的应用程序-Delphi资料 如何获得系统内存的有关信息?-Delphi资料 如何获取硬盘的ID-Delphi资料 如何检查软驱中的软盘和光驱的光盘是否发生变化。-Delphi资料 如何检查一个驱动器是否就绪?并且不出现错误信息-Delphi资料 如何将Wav文件做到EXE文件里-Delphi资料 如何将你的程序放在Windows启动中-Delphi资料 如何控制Ctrl+Alt+Del键-Delphi资料 如何控制壁纸-Delphi资料 如何控制关闭Windows-Delphi资料 如何屏蔽系统功能键-Delphi资料 如何取得Windows的临时文件目录?-Delphi资料 如何确保你的.exe文件仅运行一次!-Delphi资料 如何让 Windows 模拟按键-Delphi资料 如何让程式只执行一份?-Delphi资料 如何让程序只执行一次?-Delphi资料 如何删除一个控件的子控件-Delphi资料 如何识别显示器当前的分辨率-Delphi资料 如何为Delphi程序添加事件和事件处理器 如何写小执行程序-Delphi资料 如何隐藏桌面上的图标-Delphi资料 如何用API更改改计算机名字-Delphi资料 如何用Delphi映射网络驱动器? 嘎毛毛奇怪了. 请教大家一个问题,请看下面。。。 告诉大家一个链接,来着有分,呵呵 请教三层开发 请问用stringGrid控件,怎样获知当前行是第几条纪录? JScrollbar的颜色怎么改??? 请Norwaywoods(挪威的森林)来拿分!!!(方法见内容) php连mssql,php.ini or httpd.conf需要改动什么地方? 关于多文档编程的超难问题,高手请进!!一定给分,我会继续加分!!! 提问:关于软件测试的若干问题,谢绝灌水者入内!高薪聘请业内人士! 请问用javascript怎么显示客户端的IP地址?谢谢 sql问题 oracle中什么权限,才能使一个用户下的表参考另一个用户下的表(就是外键)? 种了中国一号病毒,怎样才能铲草除根? yinx(yinx)请进,拿你应得的分数 请各位高手帮忙,有高分送上。 一个SQL语句的问题。谢啦 为什么我的msdn帮助系统“目录”、“索引”等里的标题都显示不出来了呢? 存储过程只能用一种方式调用吗? 数据库字段问题 如何在ADO的SQL控件中不用ODBC完成长型备注型字段的模糊查询 数据库连接问请各位指点(300分) 圖像控件和報表製作 创天中文版是怎么汉化的?我想把它改回英文的要怎么改? 请问有没有Linux版本的QQ? 找DriverStudio2.5正式版 VB6中不能使用ACCESS2000数据库??? vb中怎么调用dos命令 请问海星... 哪有visual age3.0下载? 有关FTP 我双击注册表编辑器出现"注册表编辑器被管理员禁用"是怎么回事?怎么解决? 如何更改Oracle显示日期的默认方式? *****高手请进****** ======================各位高手,看一下!UP也有分! 请问安徽的高程成绩什么时候可以查? 请问谁知道vb里面如何调用notes对象,怎么调用? 急急急,我好急,有没有办法先把记录集处理一下在绑顶到datagrid 请问为什么这一段XML代码运行不了???为什么???帮帮忙??多谢!! 请教有关手机方面的问题 连编好的可执行文件不能用 帮帮忙啊 哪儿有免费的jsp空间并且有数据库支持的?谢谢 客户机的WinSock控件采用TCP协议,如何使用预设的固定的端口? sos!Help me! 有谁知道怎样用Capwnd控件(用于捕获视频的控件)?? 请帮我看看,谢了 请问如何控制imagecombo控件的下拉高度呢? 能告诉我什么是回调函数吗?注册的系统回调函数中引入的参数能在别的地方得到吗? 在RicheEdit里的字体颜色都是黑色,能变成其他颜色吗? 请问在视中如何使主框架的某个菜单项变为不可用(代码如下,错在什么地方,如何改?)! 核能和电能是不可再生能源吗 在煤碳.石油等不可再生能源日益枯竭的背景下,你如何设想人的可持续发展之路? 是不是所有恐龙死了都变成化石? 核电为什么是不可再生能源 煤炭和石油是不可再生能源吗如果不可再生那么在以前随着地球的发展为什么这些能源会越来越多 为什么形成化石的首要条件是生物的大量死亡? 不可再生能源和可再生能源分别有哪些?用途分别是什么? 数列an的首项a1=1,且对任意n∈N,an与a(n+1)恰为方程x^2-bnx+2^n=0的两个根(1)求数列an和bn的通项公式(2)求数列bn的前n项和Sn 生物化石属于生物吗? 可再生能源和不可再生能源 及它们的用途!急!好的可以再加悬赏!可再生能源和不可再生能源有哪些?用处分别是什么?! 用到PEG4000在橡胶制品主要有哪些呢? 世界上有死化石吗? 怎样节约与利用不可再生能源 数列an中,a1=1,an\an+1是关于X的方程 X平方—(2n+1)x+1/Bn=0的两根,则数列Bn的前n项和Sn是多少? 化石就是生物吗?是或不是? 自然界存在的不可再生能源和可再生能源及主要用途写清名称及其用途,各五个 橡胶制品的重要指标是什么 下列岩石中,可能含有化石的是()A.花岗岩和页岩 B.大理岩和砂岩 C.砾岩和板岩 D.石灰岩和页岩 下列哪一种发电方式采用的是不可再生能源A风力发电 B太阳能发电 C生物质能 D核能 在数列{an}中,a1=1,an+1=(1+1/n)an+(n+1)∕2n 设bn=an/n,求证bn+1-bn=1/2^n bn的通项公式 地壳中含有动植物化石的岩石是?A.火成岩B.沉积岩C.变质岩D.花岗岩 汽车什么地方用橡胶制品 地球上的不可再生能源分别是哪些?(只要名字)请说全点,我只要哪些不可再生能源的名字就可以了, 已知压力容器的设计压力,如何确定计算压力?如设计压力为0.8MPa,计算压力? 汽车用燃油管属于橡胶制品吗 人类在地球上还能支撑多少年?1、环境恶化,也许很快人就不能适应了.2、资源枯竭,人也许用不了多少年就没东西吃了. 给排水设计水力计算,怎么计算最不利点和每段的压力我画的是高层公建给排水给水立管,设置减压阀的时候要通过水力计算.管道水头损失怎么算 必须的出水水头怎么算?有公式么 汽车方向盘套是塑料还是橡胶制品 哪里的橡胶制品生意好做一点 设计选型计算用的压力比如知道管道及缓冲罐进口工作压力0.25Mpa,设计压力为1.6Mpa,当进行缓冲罐选型计算的时候使用1.6MPa为操作压力还是0.25Mpa呢? 已知数列an满足a1=1,a(n+1)=3an,数列bn的前n项和Sn=n^2+2n+1.求数列an,bn的通项公式.设cn=anbn,求数列cn的前n项和Tn 为什么橡胶制品出油?像带的腕带,中性笔上的橡胶套,长时间后 会油油的,还有特殊气味,为什么? 构成生物化石的主要成分是()生物体的基本物质蛋白质生物体的遗传物质核酸生物体的主要供能物质糖类溶于地下水中的矿物质 已知数列an前n项和为Sn,且满足a1=4,Sn+Sn+1=5/3an+1 它是不是化石怎么鉴别是否是化石~在内蒙古呼和浩特有没有鉴定这种石头的地方~ 生物为什么会化石生物化石的发生了哪一些化学变化 橡胶制品经过什么处理后才能使用 这是不是某种化石? 化石算是生物吗 本人想打磨橡胶制品不知道采用何种工具合适!要将光滑的面打磨粗糙,类似于粘自行车胎,橡胶制品为筒状,筒底不是平的,是半球形!橡胶质地较软! 哪个专家帮忙看一下这个是不是化石.是哪个时代的植物化石. 我要做作业,快 英语翻译英文翻译 主要产品:收割机 拖拉机 柴油机 拖拉机 旋耕机 秸秆还田机 开沟机 喷灌机 投饲机 播种机 售后服务及维修 橡胶制品中什么材料与铬反应 500米线路80千瓦负荷需要多大电线如何计算 已知数列{an},{bn}满足a1=2,b1=1,且{an=3/4an-1+1/4bn-1+1 bn=1/4an-1+3/4bn-1+1(n≥2),数列{cn}满足Cn=an+bn.问题:设数列{Cn}的前n项和为Sn,求证:1/S1+1/S2+1/S3…+1/Sn<1能详细点? 化石只出现在沉积岩中吗 设cn=(an+1)bn.n=1,2,3……求数列{cn}的前n项和Tn已知数列{Bn}的前n项和为Sn且2Sn+Bn=2,数列{An}为等差数列且As=14,A7=20(1)数数列{Bn}的通项公式 把动力装置分散安装在每节车厢上,使其既具有牵引力,又可以载客,这样的客车车辆叫做动车,而动车组就是几节自带动力的车辆(动车)加几节不带动力的车辆(而叫拖车)编成一组,就是动 为什么石灰岩能找到生物化石 总负荷怎么算啊我把我们公司的所有用电器(电脑.空调,灯,食堂的锅冰箱等)的最大功率都加一起了,总和为107.55KW,电表上写的是3X20(80A),3X220/380.请问有没有超负荷啊,怎么算才对啊. 已知数列{an},如果数列{bn}满足b1=a1,bn=an+a(n-1)则称数列{bn}是数列{an}的生成数列已知数列{dn}的通项为dn=2^n+n设{dn}的生成数列{pn}若数列{Ln}满足Ln=dn,n是奇数 Ln=pn,n是偶数求数列{Ln}的前n项和Tn 为什么只有沉积岩才有化石? 求电焊机的计算负荷施工现场临电施工组织设计,电焊机负荷计算怎么求啊,要详细一点的,还有公式,讲解什么的, 紫外线杀菌灯使用中对橡胶制品和塑料制品有影响吗 石灰岩一般含有什么化石 三相电负荷计算三十千瓦负荷要多大电线 数列an,bn满足a1=b1=1,an+1-an=bn+1/bn=2,则数列ban的前10项和为 在野外考察,最有可能发现的化石是不是沉积岩 Φ57无缝钢管能承受多少压力
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn