close

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", ",");
arrow
arrow
    文章標籤
    C# DataTable CSV Convert
    全站熱搜

    西夏普 發表在 痞客邦 留言(2) 人氣()