我有一個文本定界文件需要轉換爲數據表。由於文字是這樣的:如果包含雙標記,則不要拆分字符串
Name,Contact,Email,Date Of Birth,Address
JOHN,01212121,[email protected],1/12/1987,"mawar rd, shah alam, selangor"
JACKSON,01223323,[email protected],1/4/1967,"neelofa rd, sepang, selangor"
DAVID,0151212,[email protected],3/5/1956,"nora danish rd, klang, selangor"
這也是我怎麼會看在C#
DataTable table = new DataTable();
using (StreamReader sr = new StreamReader(path))
{
#region Text to csv
while (!sr.EndOfStream)
{
string[] line = sr.ReadLine().Split(',');
//table.Rows.Add(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5]);
if (IsRowHeader)//Is user want to read first row as the header
{
foreach (string column in line)
{
table.Columns.Add(column);
}
totalColumn = line.Count();
IsRowHeader = false;
}
else
{
if (totalColumn == 0)
{
totalColumn = line.Count();
for (int j = 0; j < totalColumn; j++)
{
table.Columns.Add();
}
}
// create a DataRow using .NewRow()
DataRow row = table.NewRow();
// iterate over all columns to fill the row
for (int i = 0; i < line.Count(); i++)
{
row[i] = line[i];
}
// add the current row to the DataTable
table.Rows.Add(row);
}
}
列是動態的,用戶可以添加或刪除文本文件中的列文本文件。所以我需要檢查有多少列並設置爲數據表,之後我將讀取每行,將值設置爲數據行,然後將行添加到表。
如果我不刪除雙標記內的分號,它將顯示錯誤「找不到第5列」,因爲第一行只有4列(從0開始)。
處理文本分隔的最佳方式是什麼?
您是否需要在每次確定要使用多少列後生成數據庫表? – TheBoyan
@TheBojan:是的確切 – Chuki2
可能的重複[如何拆分csv的列可能包含,](http://stackoverflow.com/questions/6542996/how-to-split-csv-whose-columns-may-contain) –