Principales respuestas
Abrir archivo Excel creado en Tiempo de Ejecución

Pregunta
-
Hola.
Estoy exportando un DataTable a un Excel, todo bien hasta aquí, pero deseo que ese mismo excel que estoy generando se abra como si fuera un archivo aparte, pero que no interfiera con la ejecución del programa principal; no se si me explico, es decir, deseo que al final la escritura de los datos en el Excel, este se "liberara" del programa principal.
El código que tengo es el siguiente:
Function exportarExcel(ByRef datos As DataTable, Optional reporte As String = "Hoja1") Dim appExcel As New Excel.Application appExcel.Workbooks.Add() appExcel.ActiveWorkbook.Sheets.Add() appExcel.ActiveSheet.Name = reporte With appExcel For fila As Integer = 0 To datos.Rows.Count - 1 For columna As Integer = 0 To datos.Columns.Count - 1 .Cells(fila + 1, columna + 1) = datos.Rows(fila).Item(columna).ToString Next Next End With 'Aqui debería Mostrar el Archivo como un Excel "independiente" appExcel.Quit() Return 0 End Function
Estoy trabajando con WinForms.
De antemano muchas gracias.
Saludos.
- Editado Cesar Casas Q martes, 23 de febrero de 2016 17:37 Aclaracion de paltaforma
Respuestas
-
Prueba este codigo y nos comentas
Function exportarExcel(ByRef datos As DataTable, Optional reporte As String = "Hoja1") Dim appExcel As New Excel.Application appExcel.Workbooks.Add() appExcel.ActiveWorkbook.Sheets.Add() appExcel.ActiveSheet.Name = reporte With appExcel For fila As Integer = 0 To datos.Rows.Count - 1 For columna As Integer = 0 To datos.Columns.Count - 1 .Cells(fila + 1, columna + 1) = datos.Rows(fila).Item(columna).ToString Next Next End With appExcel.Visible = True appExcel.UserControl = True appExcel.Quit() Return 0 End Function
EFRAIN MEJIAS C VALENCIA - VENEZUELA
- Marcado como respuesta Cesar Casas Q martes, 23 de febrero de 2016 18:10
Todas las respuestas
-
Hola Cesar,
Una vez generada la hoja, después de hacer appExcel.Quit debes liberar memoria y abrir la hoja generada. Para poder abrirla le tienes que dar un nombre así:
Function exportarExcel(ByRef datos As DataTable, Optional reporte As String = "Hoja1") Dim appExcel As New Excel.Application Dim xlWB As Excel.Workbook = Nothing appExcel.AlertBeforeOverwriting = False appExcel.DisplayAlerts = False xlWB = appExcel.Workbooks.Open(Filename:=NombreDelFichero) appExcel.Workbooks.Add() appExcel.ActiveWorkbook.Sheets.Add() appExcel.ActiveSheet.Name = reporte With appExcel For fila As Integer = 0 To datos.Rows.Count - 1 For columna As Integer = 0 To datos.Columns.Count - 1 .Cells(fila + 1, columna + 1) = datos.Rows(fila).Item(columna).ToString Next Next End With xlWB.Save() appExcel.Quit() appExcel = Nothing System.Diagnostics.Process.Start(NombreDelFichero) Return 0 End Function
Saludos, Javier J
-
Hola Javier.
Pero tendría que guardarla forsozamente en el Disco Duro??? Sabes si existe alguna forma para abrirlo sn tener que guardarlo localmente???
Algo así como lo que se hace en ASPX, que se genera el archivo en runtime y se envía al cliente sin necesidad de guardarlo en el servidor... Por cierto, olvidé que estoy trabajando con WinForms...
-
Prueba este codigo y nos comentas
Function exportarExcel(ByRef datos As DataTable, Optional reporte As String = "Hoja1") Dim appExcel As New Excel.Application appExcel.Workbooks.Add() appExcel.ActiveWorkbook.Sheets.Add() appExcel.ActiveSheet.Name = reporte With appExcel For fila As Integer = 0 To datos.Rows.Count - 1 For columna As Integer = 0 To datos.Columns.Count - 1 .Cells(fila + 1, columna + 1) = datos.Rows(fila).Item(columna).ToString Next Next End With appExcel.Visible = True appExcel.UserControl = True appExcel.Quit() Return 0 End Function
EFRAIN MEJIAS C VALENCIA - VENEZUELA
- Marcado como respuesta Cesar Casas Q martes, 23 de febrero de 2016 18:10
-
-