Date Format

HahnertTopple

New member
Joined
Jul 18, 2024
Messages
1
Programming Experience
Beginner
I use the codes below to transfer data from datagridview to Excel. The codes are quite fast and useful. But the only problem is with the date format. How can we get data in columns containing dates in short date format?
C#:
private void ToCsV(DataGridView dGV, string filename)
{
    Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
    string stOutput = "";
    // Export titles:
    string sHeaders = "";


    for (int j = 0; j < dGV.Columns.Count; j++)
        sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";
    stOutput += sHeaders + "\r\n";
    // Export data.
    for (int i = 0; i < dGV.RowCount; i++)
    {
        string stLine = "";
        for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
        stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";
        stOutput += stLine + "\r\n";
    }

    Encoding utf16 = Encoding.GetEncoding(1254);
    byte[] output = utf16.GetBytes(stOutput);
    FileStream fs = new FileStream(filename, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(output, 0, output.Length); //write the encoded file
    bw.Flush();
    bw.Close();
    fs.Close();
}
private void button2_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Excel Documents (*.xls)|*.xls";
    sfd.FileName = "Sinav Toplu Oturum Bilgileri.xls";
    if (sfd.ShowDialog() == DialogResult.OK)
    {

        ToCsV(dataGridView1, sfd.FileName); // Here dataGridview1 is your grid view name
    }
    MessageBox.Show("Sinav Toplu Oturum Bilgileri Excel formatinda masaüstüne kaydedildi!");
}
 
Consider populating the DataGridView using a class/model which you can then export with NuGet package ExcelMapper. In the following class/model the property OrderDate is set to short date using DataFormat attribute.

C#:
public class Order
{
    public int OrderID { get; set; }
    public int CustomerIdentifier { get; set; }
    public string CompanyName { get; set; }
    [DataFormat(0xe)]
    public DateOnly OrderDate { get; set; }
}

Code to save to Excel

C#:
private void ExportButton_Click(object sender, EventArgs e)
{
    List<Order> orders = (List<Order>)dataGridView1.DataSource;
    new ExcelMapper().Save("Orders.xlsx", orders, "Orders");
}

The following source shows the above in action, in this case using Dapper to read from a database.
 
Back
Top Bottom