逗号分隔值 的读写及上传ftp服务器操作方法总结
标签:
前言公司最近开发需要将数据保存到.csv文件(逗号分隔值 )中然后上传到ftp服务器上,供我们系统还有客户系统调用,之前完全没有接触过这个,所以先来看看百度的解释:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是7-bitASCII是最基本的通用编码。
简单的说就是逗号隔开 双引号 内即为吗需要的值 数据格式并没有非常统一的标准 但是为了避免出错 我们在开发的时候统一格式是这样的
"name","pwd","date"
"张三","123","2015-09-30"
接下来代码处理中默认格式都是这样的 其实就是纯文本的形式
为什么要用csv文件这就涉及到数据互通的问题,有些程序支持的表格数据另一些程序并不见得支持,而csv格式的却被大多数的应用程序支持,所以在交换保存数据的时候是个不错的选择。
而在项目开发中 有需要做的处理也不是很简单的
比如有csv文件的读取 数据的转换(如转成datatable),csv文件的重命名 ,csv文件的写入,文件上传到ftp服务器上等等
这里将开发的方法进行了简单的整理,以备不时之需,时间仓促,有不足之处大家多多指点。
注意的点①文件处理完的时候一定记得关闭释放数据流 否则文件会被占用
②csv并没有严格的标准,多人开发的时候必须规定好格式,统一开发
一、将CSV文件的数据读取到DataTable中首先,我们为了方便管理,在web网站中常常需要读取csv文件中的数据并且显示在网站上方便查询。所以比较方便的办法是见csv文件中的数据转换成datatable形式,代码如下。
/// <summary> /// 将CSV文件的数据读取到DataTable中 /// </summary> /// <param>CSV文件路径</param> /// <returns>返回读取了CSV数据的DataTable</returns> public static DataTable OpenCSV(string filePath) { DataTable dt = new DataTable(); FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); StreamReader sr = new StreamReader(fs, Encoding.UTF8); //StreamReader sr = new StreamReader(fs, encoding); //string fileContent = sr.ReadToEnd(); //记录每次读取的一行记录 string strLine = ""; //记录每行记录中的各字段内容 string[] aryLine = null; string[] tableHead = null; //标示列数 int columnCount = 0; //标示是否是读取的第一行 bool IsFirst = true; //逐行读取CSV中的数据 while ((strLine = sr.ReadLine()) != null) { if (IsFirst == true) { tableHead = strLine.Split(‘,‘); IsFirst = false; columnCount = tableHead.Length; //创建列 for (int i = 0; i < columnCount; i++) { tableHead[i] = tableHead[i].Replace("\"", ""); DataColumn dc = new DataColumn(tableHead[i]); dt.Columns.Add(dc); } } else { aryLine = strLine.Split(‘,‘); DataRow dr = dt.NewRow(); for (int j = 0; j < columnCount; j++) { dr[j] = aryLine[j].Replace("\"",""); } dt.Rows.Add(dr); } } if (aryLine != null && aryLine.Length > 0) { dt.DefaultView.Sort = tableHead[2] + " " + "DESC"; } sr.Close(); fs.Close(); return dt; }
二、将DataTable中数据写入到CSV文件中温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/66930.html