CODE-Save ADO.NET DataTable As CSV
1 |
之前寫過將CSV檔案內容轉換成ADO.NET DataTable物件,今天的需求剛好反過來,要將DataTable的內容匯出成CSV,邏輯上簡單許多,但還是PO文一篇,下回需要時比較好找。
static string Quoted(string v) {
return "\"" + v.Replace(@"""", @"""""") + "\"";
}
static void SaveDataTableAsCSV(DataTable t, string csvPath)
{
StringBuilder sb = new StringBuilder();
List<string> l = new List<string>();
foreach (DataColumn c in t.Columns)
l.Add(Quoted(c.ColumnName));
sb.AppendLine(string.Join(",", l.ToArray()));
foreach (DataRow r in t.Rows)
{
l.Clear();
for (int i = 0; i < t.Columns.Count; i++)
l.Add(Quoted(r[i].ToString()));
sb.AppendLine(string.Join(",", l.ToArray()));
}
File.WriteAllText(csvPath, sb.ToString(), Encoding.UTF8);
}
註:
- File.WriteAllText時要加註Encoding.UTF8以確定輸出檔案會包含BOM檔頭,Excel才能正確開啟。
- 測試發現,欄位內容值即使包含換行符號,也能被Excel正確解析,讓我驚喜了一下。
Comments
# by jain
這篇好用,謝謝分享!