Visual Basic.NET - Exportar de DataSet a Excel

 
Vista:

Exportar de DataSet a Excel

Publicado por Javier (2 intervenciones) el 22/11/2006 11:40:28
Buenas compañeros.
Necesito pasar unos datos de una base de dtos SQL a un excel. Utilizaré para ellos el DataSet. ¿Pero cómo puedo transformar los datos de un DataSet a un Excel creado nuevo?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Exportar de DataSet a Excel

Publicado por Nico (64 intervenciones) el 24/11/2006 04:38:48
Esto es un poco para orientarte nomas:
Agrega una referencia (de tipo COM) en el proyecto apuntando a una dll llamada Microsot_Excel 9, 10 o 11
Luego de llenar el dataset, usas objetos de excel:

Dim ex As Excel.Application
Dim Wb As Excel.Workbook
Dim Ws As Excel.Worksheet
ex = New Excel.Application
Wb = ex.Workbooks.Open(archivo_excel) 'archivo excel es la ruta del archivo
Ws = Wb.Worksheets(1) 'la numeracion de hojas empieza en 1 no en 0
Luego variables indices que indican la fila y la columna del excel
Dim f As Integer 'Variable fila
Dim c As Integer 'Variable columna
Luego realiza un do while (aca utilizo un recordset como origen de datos) . Lo importante es asignarle a la propiedad cells(indice fila, indice columna) del objeto hoja de excel (WorkSheet) los registros del data set.tables().Creo que usando la coleccion rows(indice).item(indice) del dataset.tables(indice) podes obtener cada celda individual de la tabla del dataset

f = 1 'En excel las filas empiezan en 1

Do While Not Rs.EOF 'Tendrias que usar algun metodo fin de tu tabla
For c = 0 To Rs.Fields.Count - 1 ' cantidad de columnas de la tabla
Ws.Cells(f, c + 1) = Rs.Fields(c) 'Valor de la celda de tu tabla
Next
f = f + 1
Loop
Wb.Save()
Wb.Close()
Wb = Nothing
ex = Nothing
Espero que te sirva de algo. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Exportar de DataSet a Excel

Publicado por Julián (30 intervenciones) el 04/12/2006 22:42:13
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar