1.前言
在做檔案處理時,需要將檔案轉換成DataTable後,再進行後續如DataGridView顯示資料,或是將檔案寫入資料庫。
2.說明
文字檔案例如CSV格式是以逗號區隔資料,利用StreamReader讀取資料寫入DataTable中。
public DataTable TxtConvertToDataTable(string File, string TableName, string delimiter)
{
DataTable dt = new DataTable();
DataSet ds = new DataSet();
StreamReader s = new StreamReader(File, System.Text.Encoding.Default);
//string ss = s.ReadLine();//skip the first line
string[] columns = s.ReadLine().Split(delimiter.ToCharArray());
ds.Tables.Add(TableName);
foreach (string col in columns)
{
bool added = false;
string next = "";
int i = 0;
while (!added)
{
string columnname = col + next;
columnname = columnname.Replace("#", "");
columnname = columnname.Replace("'", "");
columnname = columnname.Replace("&", "");
if (!ds.Tables[TableName].Columns.Contains(columnname))
{
ds.Tables[TableName].Columns.Add(columnname.ToUpper());
added = true;
}
else
{
i++;
next = "_" + i.ToString();
}
}
}
string AllData = s.ReadToEnd();
string[] rows = AllData.Split("\n".ToCharArray());
foreach (string r in rows)
{
string[] items = r.Split(delimiter.ToCharArray());
ds.Tables[TableName].Rows.Add(items);
}
s.Close();
dt = ds.Tables[0];
return dt;
}
3.應用
DataTable dt = TxtConvertToDataTable(fileName, "tmp", ",");
文章標籤
全站熱搜

謝謝!
請問,我按照這樣的方式,讀檔的時候會顯示輸入的陣列長度大於這個資料表中的資料行數目,請問有辦法可以解決嗎?上網查了很多資料還是沒有頭緒....
您好, 請檢查CSV檔案,用純文字開啓,確認每行的逗號數量是否一致,有時候用Excel打開此種格式檔案存檔後,會造成每行逗號數量不一致,就會導致以上的問題。 einboch