This C# program demonstrates how to write a DataGrid full of data to an Excel .csv file in a WPF program in C#.
namespace WpfDatagrid { public class CPerson { public CPerson(string sID, string sName, string sSex, string sDate, string sBirthplace) { msID = sID; msName = sName; msSex = sSex; msDate = sDate; msBirthplace = sBirthplace; } public string msID { get; set; } public string msName { get; set; } public string msSex { get; set; } public string msDate { get; set; } public string msBirthplace { get; set; } } }
<Window x:Class="WpfDatagrid.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <DataGrid Name="mqPeople" HorizontalAlignment="Stretch" Margin="0,33,0,0" VerticalAlignment="Top" Height="286" > <DataGrid.Columns> <DataGridTextColumn Header="ID" Binding="{Binding msID}"/> <DataGridTextColumn Header="Name" Binding="{Binding msName}"/> <DataGridTextColumn Header="Sex" Binding="{Binding msSex}"/> <DataGridTextColumn Header="Date" Binding="{Binding msDate}"/> <DataGridTextColumn Header="Birthplace" Binding="{Binding msBirthplace}"/> </DataGrid.Columns> </DataGrid> <Button Content="Save" HorizontalAlignment="Left" Margin="6,8,0,0" VerticalAlignment="Top" Width="74" Click="mfnWriteDataGridToExcelFile"/> </Grid> </Window>
using System; using System.Linq; using System.Windows; using System.IO; using System.Reflection; namespace WpfDatagrid { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // Add people to the datagrid mqPeople.Items.Add(new CPerson("1", "Adam", "M", DateTime.Now.ToString(), "Eden")); mqPeople.Items.Add(new CPerson("2", "Eve", "F", DateTime.Now.ToString(), "Eden")); mqPeople.Items.Add(new CPerson("3", "Abraham", "M", DateTime.Now.ToString(), "Ur")); mqPeople.Items.Add(new CPerson("4", "Jacob", "M", DateTime.Now.ToString(), "Canaan")); mqPeople.Items.Add(new CPerson("5", "Moses", "M", DateTime.Now.ToString(), "Land of Goshen")); mqPeople.Items.Add(new CPerson("6", "David", "M", DateTime.Now.ToString(), "Bethlehem")); mqPeople.Items.Add(new CPerson("7", "Mary", "F", DateTime.Now.ToString(), "Jerusalem")); mqPeople.Items.Add(new CPerson("8", "Jesus", "M", DateTime.Now.ToString(), "Bethlehem")); } private void mfnWriteDataGridToExcelFile(object sender, RoutedEventArgs e) { try { //mqPeople.Columns.Count // Create the CSV file to which grid data will be exported. StreamWriter qSW = new StreamWriter("DataGrid.csv", false); // First, write the headers. int iColCount = mqPeople.Columns.Count; for (int i = 0; i < iColCount; i++) { qSW.Write(mqPeople.Columns[i].Header.ToString()); if (i < iColCount - 1) { qSW.Write(","); } } qSW.Write(qSW.NewLine); // Write the rows of data foreach (CPerson qPerson in mqPeople.Items) { foreach (PropertyInfo qProp in qPerson.GetType().GetProperties()) { var qType = Nullable.GetUnderlyingType(qProp.PropertyType) ?? qProp.PropertyType; if (qType == typeof(string)) { qSW.Write((qProp.GetValue(qPerson, null).ToString())); // Add a comma for all bu the last property if (qProp != qPerson.GetType().GetProperties().Last()) { qSW.Write(","); } } } qSW.Write(qSW.NewLine); } qSW.Close(); } catch (Exception ex) { throw ex; } } } }
© 20072025 XoaX.net LLC. All rights reserved.