How to export from datatable to excel file in wpf c#
20,291
Solution 1
just to make it better visible, for all
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());
}
Solution 2
You can save a .csv(Comma Seperated Value File) from your datatable. This file can then be opened in Excel.
Moreover: Whether it is WPF or Winforms, converting is same in both because its conversion code is written in your language i.e. C# and is not specific to WPF or Winforms.
Solution 3
For me Work fine thank you ... some one 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'S 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
Author by
Tony
Updated on July 09, 2022Comments
-
Tony almost 2 years
I have a datatable and want it to export it to excel file, it is a wpf application and all the solutions that i have found are for web application asp.net please help...