WPF C#

Writing a DataGrid to a CSV File

This C# program demonstrates how to write a DataGrid full of data to an Excel .csv file in a WPF program in C#.

CPerson.cs

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; }
    }
}
 

MainWindow.xaml

<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>
 

MainWindow.xaml.cs

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;
            }
        }
    }
}
 

Window

Window
 

Excel CSV File

Excel CSV File
 
 

© 2007–2025 XoaX.net LLC. All rights reserved.