我有一個DataSet。我想將數據集列作爲標題和行數據作爲數據轉換爲製表符分隔的文本文件。將數據集轉換爲文本文件製表符分隔文件
是否有任何技術我可以在我的最後做,或者我必須手動循環?
表示衷心感謝, - SEL
我有一個DataSet。我想將數據集列作爲標題和行數據作爲數據轉換爲製表符分隔的文本文件。將數據集轉換爲文本文件製表符分隔文件
是否有任何技術我可以在我的最後做,或者我必須手動循環?
表示衷心感謝, - SEL
導出到XML是內置的,但導出爲CSV文件,可以使用下面的代碼 - 從http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/d2071fd4-8c7d-4d0e-94c3-9586df754df8/
這個只寫數據,而不是列,您需要先循環列標題。
編輯:更新爲包含列名稱...我沒有運行此操作,並且這是來自上面鏈接的編輯,所以它可能會或可能不會工作,但這裏的概念是
StringBuilder str = new StringBuilder();
// get the column headers
foreach (var c in NorthwindDataSet.Customers.Columns) {
str.Append("\"" + c.ColumnName.ToString() + "\"\t");
}
str.Append("\r\n");
// write the data here
foreach (DataRow dr in this.NorthwindDataSet.Customers) {
foreach (var field in dr.ItemArray) {
str.Append("\"" + field.ToString() + "\"\t");
}
str.Append("\r\n");
}
try {
My.Computer.FileSystem.WriteAllText("C:\\temp\\testcsv.csv", str.ToString(), false);
} catch (Exception ex) {
MessageBox.Show("Write Error");
}
private static string GetTextFromDataTable(DataTable dataTable)
{
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine(string.Join("\t", dataTable.Columns.Cast<DataColumn>().Select(arg => arg.ColumnName)));
foreach (DataRow dataRow in dataTable.Rows)
stringBuilder.AppendLine(string.Join("\t", dataRow.ItemArray.Select(arg => arg.ToString())));
return stringBuilder.ToString();
}
用法:
var text = GetTextFromDataTable(dataSet.Tables[0]);
File.WriteAllText(filePath, text);
您的功能運行良好 – 2011-06-07 02:41:40
我認爲,Sel不想循環行,並尋找更好的解決方案! – DeveloperX 2011-06-07 04:18:06
注意,你將需要使用LINQ此解決方案的工作。下面using
語句添加到代碼:
using System.Linq;
我認爲這是爲了評論Alex Aza的回答 – StuartQ 2015-08-17 09:35:33
@Alex,我編輯的原代碼,這是逗號分隔,並將其轉化爲現在分開了標籤。現在它不包含標題。很容易得到..我現在編輯它 – 2011-06-07 02:33:05
此外,將有多餘的尾隨選項卡。 – 2011-06-07 02:34:35
@Alex,如果OP希望刪除尾部標籤非常容易,但是在這種情況下,每個數據都用引號包裹,尾部標籤將被CSV閱讀器忽略 – 2011-06-07 02:40:26