Exportar un DataGridView a Excel

Para el llenado del DataGridView utilizaremos en código de http://vbpuntonet.blogspot.mx/2012/06/llenar-un-datatable-manualmente-y.html

Agregaremos la referencia:

Imports Microsoft.Office.Interop

Copiamos el siguiente código que creara el archivo de Excel con la información del DataGridView:


Por último creamos el botón que llamara la función:





Publicar un comentario

20 Comentarios

  1. Hola! Me funciona perfecto el código, pero una pregunta: Como le hago para que en el excel generado, en lugar de colocar los títulos de las columnas del Access, me coloque los del DataGridView?

    ResponderBorrar
    Respuestas
    1. En el primer FOR deberás agregar el midatagridview.headtext, no recuerdo la sintaxis, pero con esto tendrás una idea.

      Saludos

      Borrar
  2. hola, una consulta, ¿Dónde queda guardado el archivo de Excel? porque no lo encuentro

    ResponderBorrar
    Respuestas
    1. Por default en "Descargas" o la carpetas que tengas como predeterminada para descargar.
      Pero me parece que el ejemplo te abre el archivo en Excel de forma inmediata solo para que indiques donde guardarlo.

      Borrar
    2. Que significa esto?
      No se puede convertir el objeto COM del tipo 'Microsoft.Office.Interop.Excel.ApplicationClass' al tipo de interfaz 'Microsoft.Office.Interop.Excel._Application'.
      Ocurrió un error de operación debido a que la llamada QueryInterface en el componente COM para la interfaz con IID '{000208D5-0000-0000-C000-000000000046}' generó el siguiente error:
      No se ha encontrado el elemento.
      (Excepción de HRESULT: 0x8002802B (TYPE_E_ELEMENTNOTFOUND)).

      Borrar
    3. Al parecer es un problema de actualización de office, revisa el siguiente link:
      https://social.msdn.microsoft.com/Forums/es-ES/bb73bf84-88bd-4fa0-bab9-c03d27801996/problema-con-librera-que-ha-funcionado-hasta-ahora?forum=vsgenerales

      Borrar
  3. GRACIAS ME HA SERVIDO, ES EXELENTE SIGUE CONTRIBUYENDO A LA COMUNIDAD DE ESTUDIANTES. TE AGRADESCO

    ResponderBorrar
  4. Muchas gracias. Me funciono a la perfeccion y me sirvio de mucho.

    Nota: hay que agregar en el proyecto la referencia .NET/Microsoft.Office.Interop.Excel para que acepte la libreria arriba descrita.

    ResponderBorrar
    Respuestas
    1. Un gusto poderte ayudar, agregare a la publicación tu nota. Saludos

      Borrar
  5. hola que tal . me funciono perfecto el único problema es que tarda demasiado cuando tengo mas de miles de registro

    ResponderBorrar
    Respuestas
    1. Si necesitas exportar miles de registros, te recomiendo que lo exportes a un archivo XML, te dejo el link, saludos.

      https://vbpuntonet.blogspot.com/2018/03/exportar-datagridview-xml.html

      Borrar
  6. Gracias master me ayudaste mucho, sos un crack.

    ResponderBorrar
  7. Excelente aporte amigo, me podrías ayudar usando el código que muestras puedo convertir la info del datagridview a excel, pero el campo fecha que tengo me cambia el formato de presentación, en el datagridview esta así "10/01/2023" pero al momento de pasarlo a excel lo muestra "01/10/2023", ya intente con Format(fecha,"dd/MM/yyyy"), pero no funciona, como se podra hacer para que se quede el mismo formato que el datagridview?

    ResponderBorrar
    Respuestas
    1. Intenta con Date.Parse(fecha).Date.ToString("yyyy/MM/dd")

      Borrar
  8. Buenas tardes, tengo un campo de DOI, algunos comienzan con CERO, pero al momento de exportar el excel, lo elimina. Cómo puedo dar solución?

    ResponderBorrar
    Respuestas
    1. Tendrás que saber que columna en el DataGridView contiene el campo con los ceros a la izquierda, y dentro del 3er. FOR agregar algo parecido a:

      If Col = 2 then
      Dim v_campo as string = miDataGridView.Rom(Fila).Cells(Col).Value
      End if

      donde Col=2 es el campo con los ceros y al agregar:

      exHoja.Cells.Item(Fila+2, Col+1) = v_campo

      Para que guarder el valor sin cambiar el formato, algo así te podría servir, no le he ejecutado, pero en teoria debe servir.

      Saludos

      Borrar