VB.Net - Exportar DataGridView a Excel

Bueno, lo primero es añadir la referencia Microsoft.Office.Interop.Excel, dependiendo del Office que tengas podrás usar la versión 11 (hasta 2003) o la 12 (2007 jiji).

Bueno en resumen, lo que hago es, crear tres variables, que una sera el programa, el libro y otra la hoja. Luego solo nos queda escribir, y te saldrá un bonito cuento :)

Aquí os dejo la función, no es nada difícil de comprender.


Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean

'Creamos las variables
Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

Try
'Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add()

' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = ElGrid.ColumnCount
Dim NRow As Integer = ElGrid.RowCount

'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
For i As Integer = 1 To NCol
exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString
'exHoja.Cells.Item(1, i).HorizontalAlignment = 3
Next

For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
exHoja.Cells.Item(Fila + 2, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value
Next
Next
'Titulo en negrita, Alineado al centro y que el tamaño de la columna se
ajuste al texto
exHoja.Rows.Item(1).Font.Bold = 1
exHoja.Rows.Item(1).HorizontalAlignment = 3
exHoja.Columns.AutoFit()


'Aplicación visible
exApp.Application.Visible = True

exHoja = Nothing
exLibro = Nothing
exApp = Nothing

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
'http://programaciontotal.blogspot.com
Return False
End Try

Return True

End Function



La función devuelve un True o un False, dependiendo si el resultado ha sido satisfactorio.

Si quieres también le puedes añadir un ProgressBar e ir sumándole uno al valor del Progress dentro del For.


Para llamar a la función es:

GridAExcel(nombreDeTuGrid)



Saludos

You liked this post? Subscribe via RSS feed and get daily updates.

117 comentarios:

  1. Muy buena, facil y rapida tu funcion... Muchas Gracias

  2. como le puedo agregar formato a las columnas?

  3. Es media noche estuve buscando la forma de escribir algo en un excell, tu ejemplo me guio y pude hacerlo por fin MUCHAS GRACIAS por compartirlo.

    My hero

  4. Gracias por vuestros comentarios :) Me alegro que les haya servido.

    Al que pregunta como agregar formato. Al final al titulo le agrego formato de negrita, alineado al centro. Juega por esas propiedades

    Saludos

  5. Muy buen aporte , estupendo codigo me sirvio de mucho, gracias por haber dedicado un poco de tu tiempo para ayudarnos.

  6. Gracias por tu aportación pero tengo un problema, cómo añadir la referencia Microsoft.Office.Interop.Excel, ?? en referencias no me sale, tengo Office 2007 y si me voy a la carpeta c:\archivos de programa\assembly\ ahí sí está pero no se como cargarlo al proyecto. Gracias por tu ayuda

  7. ta bien haaa .. tu si sabes man jaja

  8. PODRIAS EXPLICARME ESTO MISMO EN C++

  9. tigree! ..eso de Microsoft.Office.Interop.Excel

    lo pongo arriba del public class?

    o en que parte ... ayuda!! =)

  10. Me temo que te refieres a agregar la referencia.

    Lo que tienes que hacer es, en el explorador de soluciones, le das click con el botón derecho del raton y le das a agregar referencia.

    En la ventana que te sale busca Microsoft.Office.Interop.Excel

    Saludos!

  11. Joder q me servira para mi tesis
    gracias men

  12. EL PROBLEMA DE ESTE EJEMPLO, ES QUE PROGRAMAS CON OPTION "STRICT OFF", ESO IMPIDE A LOS QUE TENEMOS TODA LA APLICACION CON OPTION STRIC ON, NOS DE MUCHOS PROBLEMAS.

  13. miL...MIL... GRACIAS...MUY BUENA FUNCIÓN

  14. excelente, muchas gracias

  15. Muchas gracias, funciona muy bien.

  16. La funcion es muy buena, muy buen aporte.
    Podrias agregar el codigo para ponerle un ProgressBar y por ultimo que linea de codigo podriar agregarle o modificarle a la funcion para cuando se abra la hoja de excel sea por delante del formulario no por detras de el.
    Muchas gracias

  17. si que funciona tu codigo gracias pero tengo una duda porque no me muestra los encabezados de las columnas simplemente muestra los datos y como le dariamos nombre al archivo gracias

  18. Buenas!Si que muestra los encabezados de las columnas! Lo hace en el primer for, fijate. Y nombre se lo das despues al guardar.

  19. xvere man te pasaste

  20. Hola muy buena función me acabas de sacar de un problema, ahora tengo otro como hacer para q habra un libro con formato y agrgarle datos en celdas especificas, mi correo es jarocho1818@gmail.com gracias de antemano

  21. Hola de verdad gracias por la info esta super bien y lo mejor que si funciona a full. grax.

  22. como seria para poner un progress bar

  23. Hola...sabes que cuando lo paso al servidor no me muestra el archivo de excel que exporto....ya no se que hacer ..me podes tirar una mano!?gracias

  24. Excelente tu aporte me ha servido muchisimo para un proyecto que tengo que presentar para la empresa...
    Gracias

    Edwin Ortiz Herazo

  25. Al Anonimo del servidor.. ¿Te da algun error? ¿El excel funciona bien en el servidor? ¿que windows es? Puede ser por mil cosas!!

  26. Primero me daba error del DCOM, pero que di privilegios y no me tiro mas el error, pero a partir dde ahi no hace nada, le dio exportar y no hace nada. Tengo 2003 server, voy a reinstalar el office 2003 para probar.... Ademas no es solo que no funciona en el servidor, tampoco funciona en los clientes, solo en la pc de desarrollo. Ayuda!!!!

  27. gracias por el aporte man, estuvo super pero como yo trabajo con el office 2010 version, mejor coloque el office 2007 o version 11 para no tener problemas....

  28. graciasssssssssssssssssssssssssssssssssssssssssss de verdad :D:D:D

  29. Ayudaaaaaaaaa !!

    lo probé y resultó bien, aunque no trae los nombres que yo tengo en la cabecera de la columna.

    por defecto est arrojando: "C1DataGridViewTextBoxColumn"´

    Ahora El problema es :

    1 - Como hacer para que figuren los nombres de cabecera que yo puse en el datagridview
    2- Como hacer que una de las columnas del datagriview no aparescan en Excel?

    son interrogantes que les agradeceria muxo si logran ayudarme

  30. Buenas

    Gracias a todos por sus comentarios :)


    Veamos señor/a Anónimo:

    Lo primero es que estas usando otro control. Por lo que veo estás usando uno de ComponenOne.
    Para sacar el nombre de la columna si no recuerdo mal tendras que sustituir exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString
    por
    exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Caption


    Y lo de que no te salgan algunas columnas pues lo que se me ocurre ahora es que, en los for pongas un if <> al nombre de la columna pues se lo salte.

    Saludos

  31. Gracias me haz salvado el proyecto

  32. Gracias Pakito eres lo maxim0!!!!

  33. Gracias amigo! bue aporte lo unico en que pienso es donde aparece la parte del codigo que guarda en cierto archivo especifico, o la ruta, etc etc. puesto que esto lo hace pero como indico que sea en un archivo ya creado?

  34. gracias por el aporte, me sirvio de mucho
    de nuevo gracias

  35. muchas gracias excelente aporte
    :)

  36. Amigo muchas muchas Gracias por el aporte muy Facil y muy Efectivo......EXCELENTE!!!!

  37. ayuda!! pakito no me ase referencia Microsoft.Office.Interop.Excel ..???????
    mi correo es jugador_xz@hotmail.com

  38. link de la libreria interop.excel

    http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&displayLang=en

  39. A mi me funciona OK localmente en windows XP ..pero cuando lo subi al servidor windows server 2003 me salia un error por permisos q ya corregi y ahora me sale: No se puede convertir el objeto COM del tipo 'System.__ComOject' al tipo de interfaz 'Microsoft.Office.Interop.Excel.Range'. Ocurrio un error de operacion debido a que la llamada con IID '{00020846-0000-0000-C000-000000000046}' generó el siguiente error: Interfaz no compatible (Excepción de HRESULT: 0x80004002 (E_NOINTERFACE)). Please, si ha alguien le ha pasado esto antes... Mi msn es under_roses@hotmail.com

  40. Excelente tu aporte ahora quiero que se guarde en la ruta que yo deseo como lo haces amigo

  41. Muchas gracias por el ejemplo es genial funca a la perfección 10/10 me ayudaste un buen!!

  42. exelente amigo te pasaste!!

  43. Muy Buen aporte, exelente, parace que todavia hay personas que valoran y eseñan lo que saben, muy bueno saludos..

  44. Tengo una consulta sirve para vb.net 2005 con office 2007??
    lo otro por ejemplo puedo usar un boton guardar como y guardar el archivo y darle nombre y donde guardarlo.

  45. Muy buen dato amigo Pakito, yo tengo Office 2007 y me funciono perfectamente y las columnas me salen con el nombre que aparecen en el DataGridView.
    Ojo que en el Botonle puse lo siguiente:
    ------------------------------
    GridAExcel(Me.dgBuscarDatos)
    -------------------------------
    aclarando que mi datagridview sw llama dgBuscarDatos.

    para los que preguntan si funciona o no en VB 2005 con office 2007 = SI, yo uso 2005 con off 2007.

    Saludos

  46. Mil gracias por el código, le he adaptado a la paicacion que estoy haciendo y que mahservido al 100%. en verdad muchas gracias.

    Saludos

  47. hola y gracias por estos aportes .... pero tengo un problema ...yo tengo off 2010 y no encuentro la referencia que mencionas asi que me sale error en el codigo al no poder encontrar el tipo de variables que declaras.
    Si me puedes ayudar te lo agradeceria.
    Saludos

  48. me sirvio mucho gracias.

  49. buenisimo, muchisimas gracias, es tremendo este codigo, me sirvio demasiado. GRACIAS

  50. q buen aporte para mi q estoy aprendiendo, muchas gracias

  51. para los amigos q preguntan del progressbar, solo tienen q agregar uno al formulario y en sus propiedades le ponen Value : 0
    de esta forma empezarar en cero, tambien en la propiedad visible le ponen false,
    luego escribiremos al principio de la funcion
    Progressbar.visible = true
    Progresbar.value = 10
    y asi van poniendo en distintas partes de la funcion hasta llegar a 100

    ahora escribes esto antes de
    Catch ex As Exception
    Progressbar.visible = false para q se vuelva a ocultar.

    saludos Espero les sirva

  52. y como mando llamar a la funcion desde el boton que necesito?

  53. pues.. GridAExcel(ElNombreDeTuGrid)

  54. así es que se postea un ejemplo, mejor de ahí se daña

  55. muchas gracias por la ayuda !!!
    fácil y sencillo.
    me sale todo a la perfección
    si te puedes hacer uno de crystal reports seria fenomenal !!!!

    un saludo desde Lima-Perú.

  56. Excelente !!! muchas Gracias por esta ayuda!!! realmente me sirvio y simple!!!!...

    Saludos desde La Paz - Bolivia!!!

  57. Excelente, me salvas la vida, necesitaba algo rapido y efectivo, gracias mil !!

  58. muy buna aportacion aca con proggres bar,,,y poner los encabezados...
    saludos...Andy00

    http://andymartinez00.blogspot.com/


    Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean
    ProgressBar1.Visible = True
    ProgressBar1.Value = 0
    ProgressBar1.Maximum = ElGrid.RowCount - 1



    'Creamos las variables
    Dim exApp As New Microsoft.Office.Interop.Excel.Application
    Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
    Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

    Try
    'Añadimos el Libro al programa, y la hoja al libro
    exLibro = exApp.Workbooks.Add
    exHoja = exLibro.Worksheets.Add()

    ' ¿Cuantas columnas y cuantas filas?
    Dim NCol As Integer = ElGrid.ColumnCount
    Dim NRow As Integer = ElGrid.RowCount

    'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
    For i As Integer = 1 To NCol
    exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).HeaderText.ToString
    'exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString

    'exHoja.Cells.Item(1, i).HorizontalAlignment = 3
    Next

    For Fila As Integer = 0 To NRow - 1
    For Col As Integer = 0 To NCol - 1
    exHoja.Cells.Item(Fila + 2, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value

    Next
    ProgressBar1.Value = Fila
    Next
    'Nombre de la hoja
    exHoja.Name = "popoo"
    'Titulo en negrita, Alineado al centro y que el tamaño de la columna se ajuste al texto
    exHoja.Rows.Item(1).Font.Bold = 1
    exHoja.Rows.Item(1).HorizontalAlignment = 3
    exHoja.Columns.AutoFit()
    'Aplicación visible
    exApp.Application.Visible = True

    exHoja = Nothing
    exLibro = Nothing
    exApp = Nothing

    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
    Return False
    End Try

    Return True

    End Function

  59. Excelente compadre muy buen tips :)

  60. Muchas Gracias...

  61. Este comentario ha sido eliminado por el autor.
  62. Mil Gracias..

  63. Muy bueno lo suyo amigo!!!! Un abrazo. Carlos.

  64. Excelente aporte, re bien explicado. pero tengo un problema. lo trate de ejecutar y me genera un error que dice "Old Format or invalid type librarie. (Exception from HRESULT:0x80028018 (TYPE_E_INVDATAREAD)), que puede ser???? perdona mi ignorancia pero soy nuevo en esto y no descubro que puede ser!
    mi mail es Avila.Leonel.Gaston@gmail.com

    Gracias

  65. exelente te felicito me ayudastes mucho ha para colocar el nombre de las columnas del datagrib a mi me sivio asi en el primer for
    exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).DataPropertyName.ToString

  66. Arturo: Gracias por tu aporte

  67. A toda ma... camarada me hiciste un parote muchas gracias se te deve caon

    Roldán De Arco
    roldancito1@hotmail.com

  68. PaKito como hago para que me no me sustituya los datos que ya tenia en la hoja de excel???

  69. Excelente aporte... Sólo una pregunta. Si yo quiero guardarlo con un nombre de fichero específico... cómo lo hago?
    Estoy mirando diferentes opciones de las funciones pero ninguna me cuadra.
    Muchas Gracias por adelantado.

  70. Hola, que tal me ayudo mucho este aporte, solo que hubo algunas cosas que ocurrieron al correrlo y por lo que veo a algunos les ocurrio y pude solucionar esos detalles. Aqui pongo mis soluciones.

    * Para el error de "Old Format or invalid type librarie. (Exception from HRESULT:0x80028018 (TYPE_E_INVDATAREAD)),

    Se refiere al tipo de Cultura.

    Solucion:

    Dim AntiguaCultura As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")


    * Tambien ocurrio que no entraba al primer for ya que NCol me daba 0, y para eso tuve que agregar.

    Solucion:

    Dim NCol As Integer = GridDatExpExcel.HeaderRow.Cells.Count

    * Y para el de salvar el archivo con un nombre especifico realice esto:

    exLibro.SaveAs("C:\MiArchivo.xlsx")


    Gracias espero les sirva como a mi me ayudo.

  71. buenisimoooooo asi deberia ser toda la información consisa y al punto sin tantos rodeos muchas gracias!!!!!

  72. .... Muchas Gracias por tu aporte funciona perfecto

  73. de todos los metodos en la red, este es el que mas se ajusta a mis necesidades, clarisimo y el detalle de la barra de carga es un gran plus

  74. Súper bueno este código. El único problema que tengo es que tengo celdas combinadas en el datagridview y al hacer la exportación me las repite tal como si no estuviera combinada. :)

  75. Tengo un problema con el codigo, lo estoy compilando en visual estudio 2010 tengo las librerias pero en esta linea: exHoja = exLibro.Worksheets.Add() me genera este error en tiempo de diseño

    Warning treated as error : Implicit conversion from 'Object' to 'Microsoft.Office.Interop.Excel.Worksheet'.

    Alguien me puede ayudar a solucionar este problema

  76. Que codigo le puedo poner al button para que abra el excel ???

  77. Vale ya lo tengo , la respuesta aqui:
    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/d1d4cdcd-79e6-4d6b-a7bf-aa3309e653a9/

  78. Yo tenia problemas de compatibilidad y me descarge la referencia de aqui:

    http://es.softpicks.net/dll/microsoft-office-interop-excel-dll-18874.html

  79. http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/d1d4cdcd-79e6-4d6b-a7bf-aa3309e653a9/

  80. Gracias a todos por sus comentarios! Me alegro que les gusté y les sirva.


    davidd88 Para llamar a la función solo as de poner GridAExcel(NombreDeTuGrid) en el botón. Por cierto, ya que pones el código por los foros, podrías haber puesto referencia a la web! :)

    Saludos a todos

  81. Hola, muchísimas gracias por la programación, me funciona perfectamente con Visual Studio 2.010, con Windows 7 64 Bits y Microsoft Excel 2.010.

    Tengo una duda que me gustaría modificar para adaptarlo a mi proyecto. Con esta función que has puesto cada vez que le doy al botón me crea un libro nuevo, pero a mi me gustaría que cada vez que de al botón lo agregue al libro ya creado.

    Me da igual que agregue siempre toda la tabla o solo las filas nuevas (siempre que respete las antiguas).

    Es decir ir añadiendo filas en el Excel como si fuera el Datagrid.

    Podrías darme alguna pista de como hacerlo?

    De nuevo gracias por tu aporte.

    Un saludo

  82. jmmm si ves estás lineas

    exLibro = exApp.Workbooks.Add
    exHoja = exLibro.Worksheets.Add()

    Crean un libro nuevo y una nueva hoja.

    Añádele a la función esos parámetros y debería de funcionar.

    Es decir instancia esos parámetros fuera de la función y se los pasas a la función cada vez. Debería de funcionar. Lo siento pero ahora no podría probarlo

  83. Hola,

    Muchas gracias por el código. Estoy probándolo y me da un System.Runtime.InteropServices.COMException en la línea "Dim book As New Microsoft.Office.Interop.Excel.Workbook". Ya he añadido la referencia a Excel 2007 (12.0), ¿alguna idea de por qué?

    Gracias

  84. Excelente ... gracias ... eres un genio ...
    Para Office 2010 solo hay que descargar
    http://www.microsoft.com/download/en/details.aspx?id=3508
    despues agregar la referencia al proyecto para que el comando sea reconocido y listo ...
    Por supuesto necesitas Office 2010 instalado

    GRACIAS!!!!!!!!

  85. En vb.net 2010
    Este pedazo de código no funciona

    exHoja.Rows.Item(1).Font.Bold = 1
    exHoja.Rows.Item(1).HorizontalAlignment = 3

  86. Estoy trabajando en vb.net 2010
    Lo que quiero lograr es que al guardar un datagridview lo guarde con un nombre de archivo ".xls" específico y nombre de hoja, además que al guardar otro datagridview lo guarde en el mismo archivo en distinta hoja

  87. puede alguien ayudarme, por favor!
    saludos desde honduras

  88. rene molina

    quita los parentesis () del código:
    exHoja = exLibro.Worksheets.Add()

  89. Hola,

    Aún no he conseguido esto. Me da un error: "Retrieving the COM class factory for component with CLSID {00020819-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154" en mi línea de código "Dim book As New Microsoft.Office.Interop.Excel.Workbook". Ya he creado la referencia a Microsoft.Office.Interop.Excel
    Tengo poca experiencia con VB.net, agradezco vuestra ayuda de antemano.

  90. muy buena la funcion, y sirve perfectamente. pero el detalle es su velocidad. Tengo en mi grid 7 columnas y 7 filas y se tarda en cargar el excel 6,5 segundos. Si hablamos de un Grid con unas 1000 filas, no me quiero imaginar el tiempo que se va a tomar. Alguna alternativa ante esto? Ramon.

  91. oe idiota primero tienes q mostrar el documento
    exLibro = exApp.Workbooks.Add
    exHoja = exLibro.Worksheets.Add()
    exApp.Application.Visible = True
    esa es la manera d hacerlo imbesil m haz exo perder el tiempo
    by TJ

  92. sin faltar el respeto eh! y a mi me funciona bien y a todo el mundo parece que tambien. Aunque si programas como escribes entenderia que no te funcionase. y denada por ayudarte

  93. Los agradecimientos no acaban amigo, gracias por compartir tu conocimiento... saludos!

  94. hey! gracias por el aporte! pero tengo una duda... como podria hacer para que en el documento de excel las celdas se ubiquen en por ejemplo: (D5,E5,F5...), ya que no logro entender como quitarlo de los A1,B1,C1... y tambien para colocar imagenes [por ejemplo un logo] en el documento, nuevamente gracias!

  95. Gracias hermano, me has salvado

  96. lo queria para un gridview asi qeu solo tuve qeu cambiar un par de cosas y ha quedado de 10 muchas gracias!

  97. Hola. He tratado de implementar tu codigo, sin embargo me marca error al tratar de exportarlo, no marca error al tratar de compilar.
    Anexo el error excepcion de HRESULT: 0x800A02EC.
    Tendras alguna solucion para este error.
    De antemano gracias.

  98. esto estaba pensado para el Office 2007, si tienes otro no se como funcionara y si habría que cambiar algo

  99. Hola que tal yo ya tengo una funcion para llenar mi grid a lo que invoco esta funcion en el boton me da este error BC30311: Un valor de tipo 'System.Web.UI.WebControls.GridView' no se puede convertir en 'System.Windows.Forms.DataGridView'.

    Public Sub btn_exportar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_exportar.Click
    Línea 200:
    Línea 201: GridAExcel(gv_usuarios)
    Línea 202: End Sub

  100. Como bien dice el error: Un valor de tipo 'System.Web.UI.WebControls.GridView' no se puede convertir en 'System.Windows.Forms.DataGridView'. Cámbiale el parámetro de entrada DataGridView por un GridView haber si así te funciona.

  101. muy bueno el código,gracias que Dios te siga dando sabiduría para compartir con los demás,Dios te bendiga

  102. Muchas Gracias!! Excelente el código, me funcionó a la perfección. Ahora me quedó una duda... utilizo un control SaveFileDialog para guardar el archivo en vez de mostrarlo con el "exApp.Application.Visible = True". Se guarda bien y respeta todos los formatos pero me queda el proceso EXCEL.EXE abierto en el administrador de tareas. Una idea de como cerrarlo?

  103. Tengo celdas con 0 a la izquierda, al exportarlo no aparecen los 0. Alguien sabe como hacer que puedan verse al momento de exportar??

  104. Gracias ,se agradece mucho el aporta..es bueno saber que hay gente que le gusta compartir sus conocimientos.....Yo me acabo de iniciar en el mundo de programacion.....
    Pero tengo una pregunta ...Cuando exporto a excel ,,,no jala los nombre de las columnas del DataGrid....xfa guiame...es una tarea
    GRACIAS DE ANTEMANO

  105. Me uno a los agradecimientos, excelente aporte

  106. Felicidades, solo copie y pegué, cambié el nombre del Data Grid y Liiiistooooo.

    Saludos desde C. Carmen Camp. MX

  107. Este comentario ha sido eliminado por el autor.
  108. Hola me da el siguiente error: Option Strict On disallows implicit conversions from 'System.Object' to 'Microsoft.Office.Interop.Excel.Worksheet'.

    en la linea: exHoja = exLibro.Worksheets.Add()

  109. Estimado me da el siguiente error

    Error 1 Statement is not valid in a namespace.

  110. Buenos días amigos tengo valores en mi datagrid que tienen 0 a la izquierda, al exportarlos al excel no aparecen los 0. Como puedo hacer para que aparezcan en excel?????. de antemano gracias

  111. muy buen aporte ! pero me surgió un problema que al momento de exportar mis datos me los pone en una solo columna como puedo solucionarlo !
    de ante mano gracias!

  112. Muy buen aporte. Funciona al 99% en Visual Studio 2013 con Excel 2013; el problema radica en que a pesar de haber cambiado la línea de código pertinente en el primer "For", no exporta los nombres de las cabeceras que están en el DataGridView, sino que los que están en la BD (Access, por requerimiento de usuario).
    CÓDIGO INCIAL:
    exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).Name.ToString

    CÓDIGO UTILIZADO:
    exHoja.Cells.Item(1, i) = ElGrid.Columns(i - 1).DataPropertyName.ToString

  113. muy buena

  114. lo que hace aqui es pasar celda por celda, para algo pequeño puede ser, pero cuando estamos hablando de consultas con mas de 1000 registros que haces, esperar que pasen todos los registros?, propongo que lo hagan defrente de la manera donde se copia el contenido TOTAL del datagrid y se plasma en el excel en un solo paso, lo que hace una copiada de celda , lo tienes que hacer en todo el contenido del archivo, es mas facil...

  115. basicamente es tudatagrid.SelectAll(), luego utilizas GetClipboardContent, Clipboard.SetDataObject(dataObj); y luego lo pegas con xlWorkSheet.PasteSpecial(.... y asid e golpe pasas todo el contenido, claro tambien armas si gustas tu cabecera todo, si a alguien le entro el bichito de averiguar... ya estan un paso adelante

  116. Excelente aporte y muy sencillo de entender! muchas gracias!!

  117. COMO CREAS LAS LINEAS DE TABLAS DEL DATAGRIDEW AL EXCEL

Publicar un comentario