Ver Mensaje Individual
  #10 (permalink)  
Antiguo 05/02/2009, 06:43
jcalcalde
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires,Argentina
Mensajes: 16
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Exportar DataSet a Excel

Aca les dejo unas rutinas que permiten exportar a excel
desde un dataset espero les sirva

Código:
 
PublicSub DataTableToExcel(ByVal pDataTable As DataTable)
Dim vFileName AsString = Path.GetTempFileName()
FileOpen(1, vFileName, OpenMode.Output)
Dim sb AsString = ""
Dim dc As DataColumn
ForEach dc In pDataTable.Columns
sb &= dc.Caption & Microsoft.VisualBasic.ControlChars.Tab
Next
PrintLine(1, sb)
Dim i AsInteger = 0
Dim dr As DataRow
ForEach dr In pDataTable.Rows
i = 0 : sb = ""
ForEach dc In pDataTable.Columns
IfNot IsDBNull(dr(i)) Then
sb &= CStr(dr(i)) & Microsoft.VisualBasic.ControlChars.Tab
Else
sb &= Microsoft.VisualBasic.ControlChars.Tab
EndIf
i += 1
Next
PrintLine(1, sb)
Next
FileClose(1)
TextToExcel(vFileName)
EndSub

PublicSub TextToExcel(ByVal pFileName AsString)
Dim vFormato As Excel.XlRangeAutoFormat
Dim Exc As Excel.Application = New Excel.Application
Exc.Workbooks.OpenText(pFileName, , , , Excel.XlTextQualifier.xlTextQualifierNone, , True)
Dim Wb As Excel.Workbook = Exc.ActiveWorkbook
Dim Ws As Excel.Worksheet = CType(Wb.ActiveSheet, Excel.Worksheet)
'Se le indica el formato al que queremos exportarlo
Dim valor AsInteger = 10
If valor > -1 Then
SelectCase valor
Case 10 : vFormato = Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic1
EndSelect
Ws.Range(Ws.Cells(1, 1), Ws.Cells(Ws.UsedRange.Rows.Count, Ws.UsedRange.Columns.Count)).AutoFormat(vFormato)
pFileName = Path.GetTempFileName.Replace("tmp", "xls")
File.Delete(pFileName)
Exc.ActiveWorkbook.SaveAs(pFileName, Excel.XlTextQualifier.xlTextQualifierNone - 1)
EndIf
Exc.Quit()
Ws = Nothing
Wb = Nothing
Exc = Nothing
GC.Collect()
If valor > -1 Then
Dim p As System.Diagnostics.Process = New System.Diagnostics.Process
p.EnableRaisingEvents = False
System.Diagnostics.Process.Start(pFileName)
EndIf
EndSub