/// <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", '|', "|");