Csv文件转换为DataTable
/// <summary> /// CSV读取并解析为DataTable /// </summary> /// <param name="path">文件路径</param> /// <param name="splitString">切割符号诸如|</param> /// <param name="prefixRowString">行的启始标识</param> /// <returns></returns> public DataTable ReadDataTable(string path, char splitString, string prefixRowString = "") { //文件流读取 System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open); System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.UTF8); //实例化一个datatable用来存储数据 DataTable dt = new DataTable(); //行数据切割规避换行 List<string> ListString = new List<string>(); string tempText = ""; while ((tempText = sr.ReadLine()) != null) { if (tempText.IndexOf(prefixRowString) == 0) { ListString.Add(tempText); } else { ListString[ListString.Count - 1] += tempText; } } //创建数据集合 foreach (var item in ListString) { //创建列 string[] arr = item.Split(splitString); if (dt.Columns.Count == 0) for (int i = 0; i < arr.Length; i++) dt.Columns.Add(i.ToString()); //创建行记录 DataRow Dr = dt.NewRow(); for (int i = 0; i < arr.Length; i++) Dr[i] = arr[i]; dt.Rows.Add(Dr); } //展示到页面 sr.Close(); fs.Close(); return dt; }
DataTable ReadData = ReadDataTable(@"C:\Users\Administrator\Desktop\my.csv", '|', "|");