CSV是逗號分隔值格式的文件,其文件以純文本形式存儲表格數據(數字和文本)。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其它字元或字元串,最常見的是逗號或製表符。在C#中有時候需要讀取和寫入Csv文件,特此封裝了一個工具類CsvHelper。特此說一句 ...
CSV是逗號分隔值格式的文件,其文件以純文本形式存儲表格數據(數字和文本)。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其它字元或字元串,最常見的是逗號或製表符。在C#中有時候需要讀取和寫入Csv文件,特此封裝了一個工具類CsvHelper。特此說一句,C#將數據導出到CSV文件的速度比較快,有時候導出Excel文件很慢的時候可以選擇先導出.csv文件,而後再本地用Excel軟體打開。
CsvHelper類主要是利用C#操作Csv文件,主要包含2個方法。
dt2csv(參數略):將數據導入到csv文件中
csv2dt(參數略):將Csv讀入DataTable
具體的工具類實現如下:
/// <summary> /// CSV文件轉換類 /// </summary> public static class CsvHelper { /// <summary> /// 導出報表為Csv /// </summary> /// <param name="dt">DataTable</param> /// <param name="strFilePath">物理路徑</param> /// <param name="tableheader">表頭</param> /// <param name="columname">欄位標題,逗號分隔</param> public static bool dt2csv(DataTable dt, string strFilePath, string tableheader, string columname) { try { string strBufferLine = ""; StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8); strmWriterObj.WriteLine(tableheader); strmWriterObj.WriteLine(columname); 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(); } strmWriterObj.WriteLine(strBufferLine); } strmWriterObj.Close(); return true; } catch { return false; } } /// <summary> /// 將Csv讀入DataTable /// </summary> /// <param name="filePath">csv文件路徑</param> /// <param name="n">表示第n行是欄位title,第n+1行是記錄開始</param> public static DataTable csv2dt(string filePath, int n, DataTable dt) { StreamReader reader = new StreamReader(filePath, System.Text.Encoding.UTF8, false); int i = 0, m = 0; reader.Peek(); while (reader.Peek() > 0) { m = m + 1; string str = reader.ReadLine(); if (m >= n + 1) { string[] split = str.Split(','); System.Data.DataRow dr = dt.NewRow(); for (i = 0; i < split.Length; i++) { dr[i] = split[i]; } dt.Rows.Add(dr); } } return dt; } }
備註:此文章轉載自C#工具類:Csv文件轉換類_IT技術小趣屋。