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

Código
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click DATAGRIDVIEW_TO_EXCEL((DataGridView1)) ' PARAMETER: YOUR DATAGRIDVIEW End Sub Private Sub DATAGRIDVIEW_TO_EXCEL(ByVal DGV As DataGridView) Try Dim DTB = New DataTable, RWS As Integer, CLS As Integer For CLS = 0 To DGV.ColumnCount - 1 ' COLUMNS OF DTB DTB.Columns.Add(DGV.Columns(CLS).Name.ToString) Next Dim DRW As DataRow For RWS = 0 To DGV.Rows.Count - 1 ' FILL DTB WITH DATAGRIDVIEW DRW = DTB.NewRow For CLS = 0 To DGV.ColumnCount - 1 Try DRW(DTB.Columns(CLS).ColumnName.ToString) = DGV.Rows(RWS).Cells(CLS).Value.ToString Catch ex As Exception End Try Next DTB.Rows.Add(DRW) Next DTB.AcceptChanges() Dim DST As New DataSet DST.Tables.Add(DTB) Dim FLE As String = "" ' PATH AND FILE NAME WHERE THE XML WIL BE CREATED (EXEMPLE: C:\REPS\XML.xml) DTB.WriteXml(FLE) 'Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE 'Shell(Chr(34) & EXL & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus) ' OPEN XML WITH EXCEL Catch ex As Exception MsgBox(ex.ToString) End Try End Sub
Como ves he anulado las líneas...
Código
'Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE '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