How to export from datatable to excel file in wpf c #

I have a datatable and want it to export it to an excel file, this is a wpf application and all the solutions I found for asp.net web application please help ...

+6
source share
4 answers

to make it better visible to everyone

Microsoft.Office.Interop.Excel.Application excel = null; Microsoft.Office.Interop.Excel.Workbook wb = null; object missing = Type.Missing; Microsoft.Office.Interop.Excel.Worksheet ws = null; Microsoft.Office.Interop.Excel.Range rng = null; try { excel = new Microsoft.Office.Interop.Excel.Application(); wb = excel.Workbooks.Add(); ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet; for (int Idx = 0; Idx < dt.Columns.Count; Idx++) { ws.Range["A1"].Offset[0, Idx].Value = dt.Columns[Idx].ColumnName; } for (int Idx = 0; Idx < dt.Rows.Count; Idx++) { // <small>hey! I did not invent this line of code, // I found it somewhere on CodeProject.</small> // <small>It works to add the whole row at once, pretty cool huh?</small> ws.Range["A2"].Offset[Idx].Resize[1, dt.Columns.Count].Value = dt.Rows[Idx].ItemArray; } excel.Visible = true; wb.Activate(); } catch (COMException ex) { MessageBox.Show("Error accessing Excel: " + ex.ToString()); } catch (Exception ex) { MessageBox.Show("Error: " + ex.ToString()); } 
+8
source

You can save the CSV file (Comma Seperated Value File) from your datatable. Then this file can be opened in Excel.

In addition: regardless of whether it is WPF or Winforms, the conversion is the same in both cases, because its conversion code is written in your language, that is, C # and is not specific to WPF or Winforms.

+4
source

I work well, thanks ... to someone like vb.net?

 Dim excel As Microsoft.Office.Interop.Excel.Application = Nothing Dim wb As Microsoft.Office.Interop.Excel.Workbook = Nothing Dim missing As Object = Type.Missing Dim ws As Microsoft.Office.Interop.Excel.Worksheet = Nothing Dim rng As Microsoft.Office.Interop.Excel.Range = Nothing 

Sub ExcelFile (ByVal dt As DataTable)

  Try excel = New Microsoft.Office.Interop.Excel.Application() wb = excel.Workbooks.Add() ws = DirectCast(wb.ActiveSheet, Microsoft.Office.Interop.Excel.Worksheet) For Idx As Integer = 0 To dt.Columns.Count - 1 ws.Range("A1").Offset(0, Idx).Value = dt.Columns(Idx).ColumnName Next For Idx As Integer = 0 To dt.Rows.Count - 1 ' <small>hey! I did not invent this line of code, ' I found it somewhere on CodeProject.</small> ' <small>It works to add the whole row at once, pretty cool huh?</small> ' YES IT COOL Brother ... ws.Range("A2").Offset(Idx).Resize(1, dt.Columns.Count).Value = dt.Rows(Idx).ItemArray Next excel.Visible = True wb.Activate() Catch ex As Exception MessageBox.Show("Error accessing Excel: " & ex.ToString()) End Try End Sub 
+2
source

one way

 ArrayList arr = (ArrayList)dataGridView.DataSource; dt = ArrayListToDataTable(arr); dataTable2Excel(dt, dataGridView, pFullPath_toExport, nameSheet); 

http://www.codeproject.com/Articles/30169/Excel-export-from-DatagridView

http://support.microsoft.com/default.aspx?scid=kb;en-us;317719

+1
source

Source: https://habr.com/ru/post/918819/


All Articles