Преобразовать набор данных в текстовый файл с разделителями табуляции - PullRequest
1 голос
/ 07 июня 2011

У меня есть DataSet.Я хотел бы преобразовать столбец набора данных в качестве данных заголовка и строки в качестве данных в текстовый файл с разделителями табуляции.

Есть ли какой-либо метод, который я могу использовать в конце, или я должен выполнить цикл вручную?

Искренне спасибо, - Sel

Ответы [ 3 ]

5 голосов
/ 07 июня 2011
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);
4 голосов
/ 07 июня 2011

Экспорт в 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"); 
}
0 голосов
/ 30 июня 2015

Обратите внимание, что вам нужно использовать Linq для работы этого решения. Добавьте следующий оператор using в свой код:

using System.Linq;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...