none
exportar datagridview desde vb.net a excel o word RRS feed

  • Pregunta

  • Hola buen día, espero me puedan ayudar, necesito exportar un datagridview a un archivo ya creado de word o excel (como una plantilla), ayudenme por favor he buscado ya en muchas paginas pero no encuentro la solución.

    Gracias

    lunes, 5 de octubre de 2015 0:38

Respuestas

  • "usuario27" preguntó:

    > necesito exportar un datagridview a un archivo ya creado de word o excel (como una plantilla),

    Hola:

    Si ese control DataGridView se encuentra enlazado con un objeto System.Data.DataTable, lo puedes hacer muy fácilmente con los procedimientos que aparecen en los siguiente artículos, ya que lo que exportarías sería los datos existentes en el propio objeto DataTable:

    Cómo exportar a Excel el contenido de un objeto DataTable

    Cómo crear una tabla en Word con los datos de un objeto DataTable

    Ni que decir tiene que necesitarás hacer referencia en tu proyecto de Visual Basic .NET a la biblioteca de Excel o de Word, según a la aplicación donde quieras exportar los datos.

    ¿Qué no tienes el control DataGridView enlazado con un objeto DataTable? Pues entonces podrías aplicar la misma técnica que se describe en los artículos para que en lugar de recorrer las filas y columnas del objeto DataTable recorras las filas y columnas del propio control DataGridView.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    lunes, 5 de octubre de 2015 10:30
    Moderador
  • Has buscado y no has encontrado la solución porque la solución no es nada sencilla. Vas a tener que escribir unos cientos de líneas de código fuente personalizado para conseguir resolverlo; no es un pequeño fragmento que puedas copiar de un mensajito en un foro.

    Esencialmente, tendrás que abrir la plantilla usando alguna de las herramientas que sirven para manipular el Word o Excel, por ejemplo, podrías descargarte el SDK de OpenXML y usar la correspondiente DLL. O podrías usar automatización OLE para atacar al propio Word o Excel si es que lo tienes instalado en la misma máquina. Con eso vas leyendo el contenido de la plantilla hasta que llegues al sitio donde hayas marcado con algún código especial conocido por tí la ubicación en la que quieres introducir los datos. En ese punto, tienes que ir leyendo el datagridview e ir incrustando el resultado en la zona de la plantilla en la que te habías situado. Como el número de líneas será variable, esto no es una simple operación de copiar y pegar, sino que tienes que ir ubicando lo que pegas en el fichero de destino de conformidad con la estructura de ese fichero, que tendrás que conocer y comprender. Esto será diferente y variable dependiendo de la estructura de tu plantilla y de tus datos, así que tendrás que personalizar el código en consonancia; no encontrarás una solución completa y terminada y que valga para cualquier clase de plantilla en Word o Excel.

    lunes, 5 de octubre de 2015 5:32

Todas las respuestas

  • Has buscado y no has encontrado la solución porque la solución no es nada sencilla. Vas a tener que escribir unos cientos de líneas de código fuente personalizado para conseguir resolverlo; no es un pequeño fragmento que puedas copiar de un mensajito en un foro.

    Esencialmente, tendrás que abrir la plantilla usando alguna de las herramientas que sirven para manipular el Word o Excel, por ejemplo, podrías descargarte el SDK de OpenXML y usar la correspondiente DLL. O podrías usar automatización OLE para atacar al propio Word o Excel si es que lo tienes instalado en la misma máquina. Con eso vas leyendo el contenido de la plantilla hasta que llegues al sitio donde hayas marcado con algún código especial conocido por tí la ubicación en la que quieres introducir los datos. En ese punto, tienes que ir leyendo el datagridview e ir incrustando el resultado en la zona de la plantilla en la que te habías situado. Como el número de líneas será variable, esto no es una simple operación de copiar y pegar, sino que tienes que ir ubicando lo que pegas en el fichero de destino de conformidad con la estructura de ese fichero, que tendrás que conocer y comprender. Esto será diferente y variable dependiendo de la estructura de tu plantilla y de tus datos, así que tendrás que personalizar el código en consonancia; no encontrarás una solución completa y terminada y que valga para cualquier clase de plantilla en Word o Excel.

    lunes, 5 de octubre de 2015 5:32
  • "usuario27" preguntó:

    > necesito exportar un datagridview a un archivo ya creado de word o excel (como una plantilla),

    Hola:

    Si ese control DataGridView se encuentra enlazado con un objeto System.Data.DataTable, lo puedes hacer muy fácilmente con los procedimientos que aparecen en los siguiente artículos, ya que lo que exportarías sería los datos existentes en el propio objeto DataTable:

    Cómo exportar a Excel el contenido de un objeto DataTable

    Cómo crear una tabla en Word con los datos de un objeto DataTable

    Ni que decir tiene que necesitarás hacer referencia en tu proyecto de Visual Basic .NET a la biblioteca de Excel o de Word, según a la aplicación donde quieras exportar los datos.

    ¿Qué no tienes el control DataGridView enlazado con un objeto DataTable? Pues entonces podrías aplicar la misma técnica que se describe en los artículos para que en lugar de recorrer las filas y columnas del objeto DataTable recorras las filas y columnas del propio control DataGridView.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    lunes, 5 de octubre de 2015 10:30
    Moderador
  • Una observación al mensaje de Enrique M. Montejo: Los dos enlaces que proporciona indican como exporar datos en filas y columnas a una posición fija en el documento de destino. Pero el OP en su pregunta inicial expresaba su deseo de exportarlo a una plantilla, lo cual yo interpreté en mi respuesta como una necesidad de buscar en el documento existente el lugar en donde debe insertarse cada dato, y luego tomar cada uno de esos datos a partir del dgv. Esto requiere una cantidad de código considerablemente mayor que el simple bucle de inserción que señalan los artículos enlazados.
    lunes, 5 de octubre de 2015 12:14
  • Muchas gracias a los dos por tomarse el tiempo y responder a mi pregunta, voy a revisar las ligas y ya les comento los resultados o dudas que surjan 

    de antemano muchas gracias a los dos

    miércoles, 7 de octubre de 2015 22:25