elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Exportar datos de un DataGridView a un archivo Excel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Exportar datos de un DataGridView a un archivo Excel  (Leído 8,262 veces)
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Exportar datos de un DataGridView a un archivo Excel
« en: 29 Enero 2015, 18:36 pm »

Hola,
Quiero exportar datos de un DataGridView a un archivo Excel (*.xls) utilizando VB.Net (2010)

He buscado  y he encontrado este sistema y similares:

https://techperu.wordpress.com/2011/10/25/exportar-de-datagridview-a-excel-vb-net-y-sql-server/

Y vale, funciona, pero tiene dependencia con EXCEL . Esto conlleva que si se utiliza en un sistema sin Office y sin Excel, no se puede exportar los datos a un fichero excel. Lógicamente, yo no quiero esto  :¬¬

............

Bueno, encontré la forma  :xD

Código
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.    DATAGRIDVIEW_TO_EXCEL((DataGridView1)) ' PARAMETER: YOUR DATAGRIDVIEW
  3. End Sub
  4.  
  5. Private Sub DATAGRIDVIEW_TO_EXCEL(ByVal DGV As DataGridView)
  6.    Try
  7.        Dim DTB = New DataTable, RWS As Integer, CLS As Integer
  8.  
  9.        For CLS = 0 To DGV.ColumnCount - 1 ' COLUMNS OF DTB
  10.            DTB.Columns.Add(DGV.Columns(CLS).Name.ToString)
  11.        Next
  12.  
  13.        Dim DRW As DataRow
  14.  
  15.        For RWS = 0 To DGV.Rows.Count - 1 ' FILL DTB WITH DATAGRIDVIEW
  16.            DRW = DTB.NewRow
  17.  
  18.            For CLS = 0 To DGV.ColumnCount - 1
  19.                Try
  20.                    DRW(DTB.Columns(CLS).ColumnName.ToString) = DGV.Rows(RWS).Cells(CLS).Value.ToString
  21.                Catch ex As Exception
  22.  
  23.                End Try
  24.            Next
  25.  
  26.            DTB.Rows.Add(DRW)
  27.        Next
  28.  
  29.        DTB.AcceptChanges()
  30.  
  31.        Dim DST As New DataSet
  32.        DST.Tables.Add(DTB)
  33.        Dim FLE As String = "" ' PATH AND FILE NAME WHERE THE XML WIL BE CREATED (EXEMPLE: C:\REPS\XML.xml)
  34.        DTB.WriteXml(FLE)
  35.        'Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE
  36.        'Shell(Chr(34) & EXL & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus) ' OPEN XML WITH EXCEL
  37.  
  38.    Catch ex As Exception
  39.        MsgBox(ex.ToString)
  40.    End Try
  41.  
  42. End Sub

Como ves he anulado las líneas...

Código
  1.      'Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE
  2.        'Shell(Chr(34) & EXL & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus) ' OPEN XML WITH EXCEL

Porque hacen referencia a Excel.exe y estas líneas solo sirven para mostrar el archivo una vez guardado.

El código lo encontré aquí:

http://stackoverflow.com/questions/680199/how-to-export-datagridview-to-excel-using-vb-net

Saludos


« Última modificación: 29 Enero 2015, 18:54 pm por okik » En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Exportar datos de un DataGridView a un archivo Excel
« Respuesta #1 en: 30 Enero 2015, 19:42 pm »

   Bueno..., bueno... Me he visto obligado a hacer una rectificiación. El código anterior que se supone que exporta los datos de un DataGridView a un archivo de formato XLS (hoja de cálculo de Excel), no hace tal cosa. Lo que hace es crear un archivo XML, con extensión XLS.. El que lo posteó hizo un poco de trampa... Me he sentido un poco engañado. Al intentar abrirlo como archivo XLS mediante conexión Oledb. Me daba error por ser formato incorrecto, ya que como digo en realidad era XML. Fíjate en la línea 34 que pone  DTB.WriteXml(FLE). Como ves lo que crea es un archivo XML.

Como lo único que me intersaba era poder exportar e importar datos, el formato realmente era irrelevante. Así que lo que he hecho es usar este código para importar datos de un archivo XML (creado con el código anterior) a un DataGridView.

Código
  1. Public Sub AbrirXML(ByVal dtaGrdVew As DataGridView)
  2.        Dim xmlFile As XmlReader
  3.        dtaGrdVew.Columns.Clear()
  4.        xmlFile = XmlReader.Create("01.xml", New XmlReaderSettings())
  5.        Dim ds As New DataSet
  6.        ds.ReadXml(xmlFile)
  7.        dtaGrdVew.DataSource = ds.Tables(0)
  8.    End Sub



« Última modificación: 30 Enero 2015, 19:50 pm por okik » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines