jueves, 20 de marzo de 2014

Exportar DataGridView a Excel C#



El siguiente código exporta una grilla DataGridView a un archivo Excel, el objeto dgvLog es el nombre de la grilla que se tiene en el formulario. Para este método se usa la librería
Microsoft.Office.Interop.Excel.dll


 try
            {
                if (dgvLog.DataSource != null)
                {
                    SaveFileDialog fichero = new SaveFileDialog();
                    fichero.Filter = "Excel (*.xls)|*.xls";
                    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);

                        //exportar cabeceras dgvLog
                        for (int i = 1; i <= this.dgvLog.Columns.Count; i++)
                        {
                            hoja_trabajo.Cells[1, i] = this.dgvLog.Columns[i - 1].HeaderText;
                        }

                        //Recorremos el DataGridView rellenando la hoja de trabajo con los datos
                        for (int i = 0; i < this.dgvLog.Rows.Count - 1; i++)
                        {
                            for (int j = 0; j < this.dgvLog.Columns.Count; j++)
                            {
                                hoja_trabajo.Cells[i + 2, j + 1] = this.dgvLog.Rows[i].Cells[j].Value.ToString();
                            }
                        }

                        libros_trabajo.SaveAs(fichero.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                        libros_trabajo.Close(true);
                        aplicacion.Quit();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

5 comentarios:

  1. que tal!!. el código de exportar cabeceras lo copie y pegue en el mio, pero, no o me exporta las cabeceras o me exporta las celdas de abajo.... copie todo tu código y da igual, solo exporta las cabeceras...
    mi grilla solo tiene la cabecera, y una fila abajo

    ResponderEliminar
  2. hola! como podrias ponerle dos cabeceras extras q tenga un titulo y un nombre por ejemplo?

    ResponderEliminar
  3. El código toma tal cual esté en la tabla grid y lo exporta, podrías editarla antes de pasarla a este código, como si fuera un table.

    ResponderEliminar
  4. Gracias por el aporte ..te pasastes

    ResponderEliminar