2016-10-04 5 views
1

Как экспортировать DataSet (несколько из Datatables) в блокнот. От C#Как экспортировать DataSet в блокнот?

Примечание: НЕ ЕДИНСТВЕННЫЙ DataTable, несколько DataTables из DataSet;

+0

Какой формат? (xml, csv, json) –

+0

to .txt, html, и, xpf Формат для них мне нужно экспортировать –

+0

Если я понимаю ваш ответ, если мы выберем формат txt, то класс экспорта будет генерировать txt-файл со всей информацией набора данных (в простом матричном формате), если мы установим вывод xml, класс экспорта будет генерировать xml, который представляет информацию набора данных, и если мы хотим экспортировать в xpf, то класс экспорта будет генерировать тот же результат, что и файл txt, но в файл xpf? –

ответ

0
private void Write(System.Data.DataSet dts, string outputFilePath) 
{ 
    System.Data.DataTable dt = new System.Data.DataTable(); 
    for (int z = 0; z < dts.Tables.Count; z++) 
    { 
    dt = dts.Tables[z]; 
    int[] maxLengths = new int[dt.Columns.Count];  
    for (int i = 0; i < dt.Columns.Count; i++) 
    { 
     maxLengths[i] = dt.Columns[i].ColumnName.Length;  
     foreach (DataRow row in dt.Rows) 
     { 
     if (!row.IsNull(i)) 
     { 
      int length = row[i].ToString().Length;  
      if (length > maxLengths[i]) 
      { 
       maxLengths[i] = length; 
      } 
      } 
     } 
    } 

    using (StreamWriter sw = new StreamWriter(outputFilePath, true)) 
    {  
    for (int i = 0; i < dt.Columns.Count; i++) 
    { 
          sw.Write(dt.Columns[i].ColumnName.PadRight(maxLengths[i] + 2)); 
    }  
    sw.WriteLine();  
     foreach (DataRow row in dt.Rows) 
     { 
     for (int i = 0; i < dt.Columns.Count; i++) 
     { 
      if (!row.IsNull(i)) 
      { 
            sw.Write(row[i].ToString().PadRight(maxLengths[i] + 2)); 
      } 
      else 
      { 
      sw.Write(new string(' ', maxLengths[i] + 2)); 
      } 
     }  
     sw.WriteLine(); 
    } 
    sw.Close(); 
    } 
} 
} 
+0

@ swetha благодарит хороший ответ, он отлично работает для меня, это полезно для большинства моих отчетов –

1

Я предлагаю что-то простое, создаю переводчика или загружаю кучу других библиотек, доступных в Интернете.

вы бы больше всего хотели идти

public interfacte IExport 
{ 
    bool Export(Databale sometable);// this can also reference interface 
    //concrete implementation could also handle saving of file 
} 

затем вызвать на конкретный класс для реализации этого значения используйте Injection Factory Patter, зависимости и т.д., чтобы поставить конкретный тип. Затем вы можете добавлять столько конверторов для поддержки как можно большего количества типов файлов.

+0

которые являются библиотеками, которые мне нужно скачать, я много искал, я получил только datatable экспорт в блокнот, а не dataSet (hving более 2 datatables) в один блокнот –

+0

Сначала вы можете использовать цикл for на datatable, также [ microsoft C# имеет метод witeXml] (https://msdn.microsoft.com/en-us/library/x3zy2whb (v = vs.110) .aspx), для txt, сделать его CSV-формат для более легкой передачи, [Microsoft также имеет простой документ создания XPS] (https://msdn.microsoft.com/en-us/library/ms771596 (v = vs.100) .aspx), который вы можете проверить, также есть простой пример кода в [Stackoverflow ] (http://stackoverflow.com/questions/352540/how-to-create-an-xps-document) о том, как создать файл. – mahlatse

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