我寫了一個將DataTable寫入CSV文件的方法,如下所示;分隔符解決方法CSV C#
public void writeToCSV(DataTable dt)
{
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(",", fields));
}
File.WriteAllText("C:\\xampp\\mysql\\data\\sdcdbftest\\test.csv", sb.ToString());
MessageBox.Show("Success");
}
此寫入CSV文件罰款,但問題是,當我們的用戶之一,我從建立數據表中的一個字段輸入了逗號。 Excel將此作爲新列,並且在寫入Excel時,所有數據都會在錯誤的地方出現。
我已經嘗試使用分號而不是逗號,但迄今爲止還沒有工作。其中一種方法是使用分號作爲附加的字符寫入.txt文件,然後在Excel中打開它,當然選擇分號作爲分隔符。
雖然這是一種解決方法,我寧願不讓用戶每次打開excel文件時都這樣做。有沒有解決方法?
不要重新發明輪子。使用庫來編寫CSV。 – CodeCaster
@CodeCaster你能建議一個庫來使用嗎? – CBreeze
字符串連接在某些情況下不起作用。 CSV文件有標準,必須遵循這些RFC標準。完成簡單庫的最簡單方法是在掃描數據期間使用Flags,並且在遇到分隔符類型時應該打開數據部分的標誌。基本上,你需要逐字閱讀字符才能完成一個好的CSV閱讀器。 – Hozikimaru