RE:Exportar de DataSet a Excel
Este botón t manda la información del datagrid, espero t sirva!!!
Private Sub cmdExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdExcel.Click
Dim ColFinal As Integer = dsPrefijo.Tables(0).Columns.Count
Dim objLibroExcel As Excel.Workbook
Dim objHojaExcel As Excel.Worksheet
m_Excel = New Excel.Application
m_Excel.Visible = True
'' Creamos una variable para guardar la cultura actual
Dim OldCultureInfo As System.Globalization.CultureInfo = _
System.Threading.Thread.CurrentThread.CurrentCulture
'Crear una cultura standard (en-US) inglés estados unidos
System.Threading.Thread.CurrentThread.CurrentCulture = _
New System.Globalization.CultureInfo("en-US")
'' Creamos una instancia del Workbooks de Excel
'' Creamos una instancia de la primera hoja de trabajo de Excel
objLibroExcel = m_Excel.Workbooks.Add()
objHojaExcel = objLibroExcel.Worksheets(1)
objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
'' Hacemos esta hoja la visible en pantalla
'' (como seleccionamos la primera esto no es necesario. si seleccionamos una diferente a la primera si lo
'' necesitaríamos, esto lo hacemos como forma de mostrar como cambiar de entre hojas en un documento Excel).
objHojaExcel.Activate()
'' Crear el encabezado de nuestro informe
objHojaExcel.Range("A1:" & CStr(Chr(ColFinal + 64)) & "1").Merge()
objHojaExcel.Range("A1:" & CStr(Chr(ColFinal + 64)) & "1").Value = "CONSULTA " & _
" PROMEDIO DE MINUTOS POR PREFIJO DESTINO"
objHojaExcel.Range("A1:" & CStr(Chr(ColFinal + 64)) & "1").Font.Bold = True
objHojaExcel.Range("A1:" & CStr(Chr(ColFinal + 64)) & "1").Font.Size = 15
'' Crear el subencabezado de nuestro informe
objHojaExcel.Range("A2:" & CStr(Chr(ColFinal + 64)) & "2").Merge()
objHojaExcel.Range("A2:" & CStr(Chr(ColFinal + 64)) & "2").Value = "Tipos de " & _
" Línea: " & TipoPrefijo & " Código Ciclo: " & cmbCiclo.Text
'objHojaExcel.Range("A2:" & CStr(Chr(ColFinal + 64)) & "2").Font.alic = True
objHojaExcel.Range("A2:" & CStr(Chr(ColFinal + 64)) & "2").Font.Size = 13
'' Creamos los encabezados de las columnas de nuestro informe
Dim objCelda As Excel.Range = objHojaExcel.Range("A4", Type.Missing)
objCelda.Value = dsPrefijo.Tables(0).Columns(0).ToString.Trim
For a As Integer = 1 To dsPrefijo.Tables(0).Columns.Count - 1
objCelda = objHojaExcel.Range(Chr(a + 65) & "4", Type.Missing)
objCelda.Value = dsPrefijo.Tables(0).Columns(a).ToString.Trim
Next
'Iniciamos las variables de control para desplegar los registros de nuestra tabla;
'la variable "i" la utilizaremos para controlar el número de la fila,
'y la variable "j" la utilizaremos para controlar el rango que cubre el subtotal,
'que será desde (j+2) hasta (i-1).
Dim i As Integer = 5
Dim j As Integer = 5
Dim c As Integer
For Each objRow As DataRow In dsPrefijo.Tables(0).Rows
'' Asignar los valores de los registros a las celdas
c = 0
For b As Integer = 1 To dsPrefijo.Tables(0).Columns.Count
objHojaExcel.Cells(i, CStr(Chr(b + 64))) = objRow.Item(c) '
c += 1
Next
'' Avanzamos una fila
i += 1
Next
Dim strRangoTotal As String = "A4:" & CStr(Chr(ColFinal + 64)) & ""
Dim intRowInicial As Integer = i - 1
'' Seleccionar todo el bloque desde A1 hasta D #de filas
Dim objRango As Excel.Range = objHojaExcel.Range(String.Format(strRangoTotal & intRowInicial, i - 1))
'' Seleccionamos todo el rango especificado
objRango.Select()
'' Ajustamos el ancho de las columnas al ancho máximo del
'' contenido de sus celdas
objRango.Columns.AutoFit()
'' Asignar filtro por columna
objRango.AutoFilter(1, , VisibleDropDown:=True)
'' Asignar un formato automático
objRango.AutoFormat(40, Alignment:=False)
objHojaExcel.Cells(1, 1).Select()
End Sub