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

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

 

 

 

 

 

设计优秀API七大要诀 需求 细节 BI项目成功的五大要素 BI项目成功的五大要诀 最受程序员欢迎的公司榜单发布:2015 IT人才招聘趋势分析 Swift中的指针操作及使用 Android性能优化典范 专访Google涂鸦首席设计师Ryan Germick:为什么世界需要Doodle? 不炒作就会死!小米乐视生态布局的那些爱恨情仇 100个iOS开发/设计面试题汇总,你将如何作答? 王巍:关于Swift学习和Apple Watch开发的一些建议 微软发全息影像头戴装置HoloLens 体验很真实 相爱相杀?盘点迎新年的移动互联网撕逼大战 HealthKit开发教程:用Swift编写个健康应用! 真的不够用!Apple Watch常规使用续航3.5小时 Activiti实战 百度BAE携手科技寺助力应用一站式部署 不仅仅是高速传输,Qualcomm演示骁龙810处理器功能 利用JS高效开发原生游戏 Cocos 2d-JS中文版API文档正式上线 同行代码审查实战分析 在Swift中使用JavaScript的方法和技巧 增强用户体验 让网站和APP更具动感的几点建议 《近匠》蒲公英:一站式免费应用内测平台 用Swift开发iOS 8新应用:斯坦福免费课程上线iTunes U Swift开发必备技巧:static和class的使用 你可能没听过的11个Python库 移动Web技术的春天来了?Facebook发布React Native,用JavaScript开发移动原生应用 开发不易!2015年移动应用开发趋势总结 .NET开发者必备的工具箱 热情不减!七款Swift应用开源项目推荐 如何给苹果提交Bug或功能需求? 深入钻研Augular两年 谈谈其究竟适用于哪些场合 向oracle 中插入纪录,日期格式由问题,见内 查询问题 如何取消验证 关于asp打印的一些设置的请教 dbgrid显示不同小数位数问题 关于用nmudp实现传输!up也有分,:)) 我在WSAD5.0中创建的WAS 5.0Server 为什么总是启动出错???请各位高手指点!!! 关于Apache+mysql 100分求《设计模式-可复用面向对象软件的基础》电子书! 向oracle 中插入纪录,日期格式由问题,见内 在线等候 在企业管理器里附加了一数据库,显示为readonly,为什么!!!! 就要实习了,不知哪些公司比较乐意接受实习生呢 急!!请问如何在WEB自定义控件中响应事件? 本人最近写了一个服务器端文件管理的程序,基本的功能都已经实现,但是下载的功能还是不行,欢迎大家讨论实现。 奇怪的comboBox的数据绑定问题! 为什么不能把记录成批插入到表中? 在VC中操作access:update的where子句中用"and"组织成多个表达式时出错! 在线等候 怎么将数据库中的字段项动态的添加到COMBOX里面去。(我用的是DB2数据库) sql关于多个数据库的问题 散分了! 我也散点分吧 有些话不吐不快!看某不知来历的版主下台后发贴有感 不知道是怎么回事,难道是显示器坏了? 启动windowns2000报错"no language support detected",请问怎么解决? WIN ME下怎么调试 ASP? oracle 存储过程代码格式优化 大家看过《ASP.NET完全手册》这本书吗?为什么书中提供的与书想配的站点http://www.prosetech.com/CompleteReference/不可访问呢? 紧急求救:如何根据数据库中的值以红色字体显示datagrid中的满足条件特定列特定行? 能不能实现用NOTES databse打开一个website(公司内部的),同时这个database自动关闭?? 用pear的进来报个名,以后互相学习~ VB.NET的两个简单问题??? not enough free disk space on /tmp,这个问题如何解决,(100分) 急寻:中缀和后缀表达式互转的源代码。 请问这个页面如何实现的..... 简单问题,在线等待中... 百分求购事务处理!! 用ATL写了一个com组件,在客户端怎么调用它呢? 请问如何取得USB摄像头和普通麦克的数据,怎样将已得到的视频音频数据在终端上播放 如何让WAS和Tomcat一样,运行JSP/SERVLET的时候出现错误进行提示? 用JDBC连接SQL Server 2000数据库问题?在线等待... 弹出式菜单的问题 各位大侠,寻求帮助,急!急! c语言类中的私有和公有变量在汇编中怎么表示? 关于EJB测试的问题 谁能给个错误处理的例子 比如 SQLSERVER 数据库关闭时 返回 “数据库关闭“ 的信息 部分匹配的问题 英文版XP中文显示问题 oracle,用PreparedStatement更新数据库,date型字段精确到分,应该如何操作? 数据导入的问题 一道不等式证明实数a,b,c满足a>b>c,且a+b+c=1,a^2+b^2+c^2=1,证明1 风向与帆船行驶方向有什么关系? 若圆x^2+y^2-2x-2y-16=0上恰有三点到直线l:ax-by=0的距离为2√2,则直线的倾斜角是 由于风向变化,一帆船不断改变航向.它先沿北偏东45°行驶3.2Km,然后北偏西50°行驶4.5Km,最后又沿北偏东45°行驶2.6Km.上述航程经历了1小时15分钟.求:(1)此期间帆船的总位移;(2)此期间帆 急求 辩论赛 劳心者对社会的贡献更大,我是二辩,要犀利点的问题 若圆x+y+2x+2y+1=0的面积被直线ax+by+1=0(a>0,b>0)平分,则ab的最大值是 风向与帆船的航行方向有时相同,有时不同.对还是错 为什么帆船在相反的风向下还能向前运行?如题 帆船的运动原理是怎样的 辩论赛题目当今社会劳心者和劳力者哪个更重要.我方反方劳力者更重要... 怎样理解血流速度与血管的截面积成反比 中世纪中国的数学成就主要的数学成就,能够有五条就行紧急! 外媒:以色列空袭加沙地带 未造成人员苏联时期主题性美术创作稿展在杭举行浙江金华8890便民服务平台开通韩国总统好感度调查出炉 卢武铉居首李最高法出台纲领性文件 强化依法办案理伊朗将举行系列会谈 为新一轮核问题谈上海历史博物馆获赠民国老股票 留有杜温州办公用房改革搁浅 官方表示执行起2013全球EMBA百强排行榜 清华两大报业集团合并 上海报业集团今天挂官员谈上海自贸区制度创新 政府职能转撑伞门,不问是非何谈对错弯着腰奔未来老鹰、灰熊扳平总比分郜林母校办足球文化节 24年培养出1红十字会聘请李源潮为名誉会长张文秀:出事的这219天压力很大 每傅成玉否认“内部传达两桶油合并”东风汽车换帅尘埃落定张光北演绎“酒腻子”团长沪指高台跳水再跌1.62%家长称娃身上现针眼报案
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘