【C#】读取csv文件数据返回DataTable

 public static DataTable ReadDataTable(string filePath)
 {
     DataTable dt = new DataTable();
     try
     {
         System.Text.Encoding encoding = Encoding.Default;//GetType(filePath); //
         // DataTable dt = new DataTable();
         System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open,
             System.IO.FileAccess.Read);
         System.IO.StreamReader sr = new System.IO.StreamReader(fs, encoding);
         //记录每次读取的一行记录
         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++)
                 {
                     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];
                 }
                 dt.Rows.Add(dr);
             }
         }

         if (aryLine != null && aryLine.Length > 0)

         {
             dt.DefaultView.Sort = tableHead[0] + " " + "asc";
         }
         sr.Close();
         fs.Close();
     }

     catch (Exception ex)
     {
     }
     return dt;
 }
posted @ 2024-12-10 16:49  qiutian-hao  阅读(9)  评论(0编辑  收藏  举报