CSV是一种通用的、相对简单的文件格式,常用于程序之间转移表格数据。CSV文件默认以英文逗号做为列分隔符,换行符作为行分隔符。
以文本方式打开csv会发现其实列是由“,”分割。

        C#读写CSV的常用写法,在这里写个笔记。
一、读取CSV返回DataTable /// <summary> /// 读取CSV /// </summary> /// <param
name="filePath">CSV路径</param> /// <param
name="n">表示第n行是字段title,第n+1行是记录开始</param> /// <returns></returns> public static
System.Data.DataTable CsvToDataTable(string filePath, int n) {
System.Data.DataTable dt = new System.Data.DataTable(); StreamReader reader =
new StreamReader(filePath, System.Text.Encoding.Default, false); int m = 0;
while (!reader.EndOfStream) { m = m + 1; string str = reader.ReadLine();
string[] split = str.Split(','); if (m == n) { System.Data.DataColumn column ;
//列名 for (int c = 0; c < split.Length;c++ ) { column = new
System.Data.DataColumn(); column.DataType =
System.Type.GetType("System.String"); column.ColumnName = split[c]; if
(dt.Columns.Contains(split[c])) //重复列名处理 column.ColumnName = split[c] + c;
dt.Columns.Add(column); } } if (m >= n + 1) { System.Data.DataRow dr =
dt.NewRow(); for (int i = 0; i < split.Length; i++) { dr[i] = split[i]; }
dt.Rows.Add(dr); } } reader.Close(); return dt; }二、DataTable数据写入CSV   ///
<summary>        /// DataTable导出为CSV        /// </summary>        /// <param
name="dt">DataTable</param>        /// <param name="strFilePath">路径</param>    
   public static void dataTableToCsvT(System.Data.DataTable dt, string
strFilePath)        {            if (dt == null || dt.Rows.Count == 0)  
//确保DataTable中有数据                return;            string strBufferLine = "";
           StreamWriter strmWriterObj = new StreamWriter(strFilePath, false,
System.Text.Encoding.Default);            //写入列头            foreach
(System.Data.DataColumn col in dt.Columns)                strBufferLine +=
col.ColumnName + ",";            strBufferLine = strBufferLine.Substring(0,
strBufferLine.Length - 1);            strmWriterObj.WriteLine(strBufferLine);  
         //写入记录            for (int i = 0; i < dt.Rows.Count; i++)            {
               strBufferLine = "";                for (int j = 0; j <
dt.Columns.Count; j++)                {                    if (j > 0)          
             strBufferLine += ",";                    strBufferLine +=
dt.Rows[i][j].ToString().Replace(",", ""); //因为CSV文件以逗号分割,在这里替换为空              
 }                strmWriterObj.WriteLine(strBufferLine);            }        
   strmWriterObj.Close();        }


友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信