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;
}
}
}
}
© 20072026 XoaX.net LLC. All rights reserved.