首页 > 解决方案 > 导出到excel时Datagridview C#列日期错误格式

问题描述

当我尝试将 a 导出datagridview到 Excel 文件时遇到问题,我拥有的日期列是这样的:

在此处输入图像描述

但是当我导出到 Excel 时,格式发生了变化,或者是一个字符串。

在此处输入图像描述

我设置了格式:

dataGridView1.Columns[3].ValueType = typeof(DateTime);
dataGridView1.Columns[3].DefaultCellStyle.Format = "dd/mm/yyyy";

这是我的导出代码:

public void ExportarDataGridViewExcel(DataGridView grd)
{
    try
    {

        SaveFileDialog fichero = new SaveFileDialog();
        fichero.Filter = "Excel (*.xls)|*.xls";
        fichero.FileName = "ReporteExportado";
        if (fichero.ShowDialog() == DialogResult.OK)
        {
            Microsoft.Office.Interop.Excel.Application aplicacion;
            Microsoft.Office.Interop.Excel.Workbook libros_trabajo;
            Microsoft.Office.Interop.Excel.Worksheet hoja_trabajo;


            aplicacion = new Microsoft.Office.Interop.Excel.Application();
            libros_trabajo = aplicacion.Workbooks.Add();
            hoja_trabajo =
                (Microsoft.Office.Interop.Excel.Worksheet)libros_trabajo.Worksheets.get_Item(1);

            //Recorremos el DataGridView rellenando la hoja de trabajo
            for (int i = 0; i < grd.Rows.Count - 1; i++)
            {

                for (int j = 0; j < grd.Columns.Count; j++)
                {
                    if ((grd.Rows[i].Cells[j].Value == null) == false)
                    {

                        hoja_trabajo.Cells[i + 1, j + 1] = grd.Rows[i].Cells[j].Value.ToString();

                        label3.Text = "Registros: " + i + " de "+dataGridView1.Rows.Count;
                        prgBar.Minimum = 0;
                        prgBar.Maximum = 100;
                        int valor;
                        valor = (100 * i) / dataGridView1.Rows.Count;
                        prgBar.Value = valor;

                    }
                }
            }
            MessageBox.Show("Tarea realizada");
            label3.Text = "";
            prgBar.Value = 0;
            libros_trabajo.SaveAs(fichero.FileName,
                Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
            libros_trabajo.Close(true);
            aplicacion.Quit();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error al exportar la informacion debido a: " + ex.ToString());
    }
}

我看到一些问题,我发现这是一个Excel问题,或者一些也是。

标签: c#.netexceldatagridview

解决方案


试试这个方法

hoja_trabajo.Columns[4].NumberFormat = "dd/mm/aaaa";

推荐阅读