2016-12-21 5 views
1

У меня есть datatable и экспорт строк мудрых данные в текстовый файлЭкспорт полный DataTable сразу в текстовый файл

foreach (DataRow dr in dt1.Tables[0].Rows) 
{     
    WriteToFile("Docket with Docket number {0} and Request ID {1} booked from Agent Account having Login ID {2} on {3}"+ dr["DOCKET_NUMBER"].ToString()+ 
     dr["REQUEST_ID"].ToString()+ dr["CREATED_BY"].ToString()+dr["CREATE_DATE"].ToString()); 
} 

private static void WriteToFile(string text) 
{ 
     string path = "E:\\ServiceLog.txt"; 
     using (StreamWriter writer = new StreamWriter(path, true)) 
     { 
      writer.WriteLine(string.Format(DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt")+ "  "+ text)); 
      // writer.WriteLine(string.Format(text +)); 
      writer.Close(); 
     } 
    } 
} 

может я экспортировать весь datatable в текстовый файл сразу ??

ответ

2

Вы можете использовать класс StringBuilder и его методы, то есть AppendFormat и AppendLine, чтобы читать все строки. то после этого просто вызовите вам метод WriteToFile

StringBuilder sb = new StringBuilder(); 
foreach (DataRow dr in dt1.Tables[0].Rows) 
{     
    sb.AppendFormat("Docket with Docket number {0} and Request ID {1} booked from Agent Account having Login ID {2} on {3}", dr["DOCKET_NUMBER"].ToString(), dr["REQUEST_ID"].ToString(), dr["CREATED_BY"].ToString(), dr["CREATE_DATE"].ToString()); 
    sb.AppendLine(); 
} 
WriteToFile(sb); 
+0

, но цель состоит в том, чтобы избежать прокрутки по каждой строке и сэкономить время, а с помощью StringBuilder все равно мы делаем то же самое. – Soniya

+0

@Soniya, Но вы пишете файл только один раз и читаете все строки, которые вы должны выполнять итерации либо используя простой цикл 'for' или LINQ. – Satpal

+1

Спасибо за помощь – Soniya

1

Вы можете сделать это ..

var lines = dt1.Tables[0].AsEnumerable().Select(dr => "Docket with Docket number {0} and Request ID {1} booked from Agent Account having Login ID {2} on {3}" + dr["DOCKET_NUMBER"].ToString() + 
     dr["REQUEST_ID"].ToString() + dr["CREATED_BY"].ToString() + dr["CREATE_DATE"].ToString()); 
File.WriteAllLines("YourFilePath",lines); 
1

насчет записи в XML? Xml - это текст, поэтому условие выполнено.

Использование метода DataTable.WriteXml для записи и DataTable.ReadXml способ считывания данных в/из текстового файла.

0

Я никогда не писал Datatable в txt-файл, но я предлагаю вам попробовать ClosedXml и сразу написать Datatable в файл csv. ClosedXml - одна отличная библиотека, и до сих пор у меня нет проблем с ее запуском, вы должны проверить их страницу github о том, как ее использовать и расширить.

Смежные вопросы