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

 

posted @ 2022-07-28 23:58  全栈攻城师  阅读(249)  评论(0)    收藏  举报