El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de ASP/ASP.NET
Foros del Guru > ASP/ASP.NET
Usuario Accedo a excel desde asp.net pero ...
wakeup
3 Mensaje(s)
Enviado - 6/10/2004
 
Estoy accediento a excel desde una aplicacacion asp.net pero no hay forma que una vez cierre el archivo excel desaparezca de la lista de procesos de windows el excel.exe.
He probado este codigo en un proyecto vb.net (no web) y el proceso excel.exe se cierra perfectamente, pero en asp.net no hay manera. ¿Alguien saber porque?
Este es el codigo...

Dim oExcel As New Excel.Application
Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oSheets As Excel.Sheets

oExcel.Visible = False
oExcel.UserControl = False
oBooks = oExcel.Workbooks
oBooks.Open("prueba.xls") 'Load colorful template with graph

oBook = oBooks.Item(1)
oSheets = oBook.Worksheets
oSheet = CType(oSheets.Item(1), Excel.Worksheet)


Label1.Text = oSheet.Cells(1, 1).Value

oBook.Close()

'Quit Excel and thoroughly deallocate everything
oExcel.Quit()
ReleaseComObject(oSheet)
ReleaseComObject(oSheets)
ReleaseComObject(oBook)
ReleaseComObject(oBooks)
ReleaseComObject(oExcel)
oExcel = Nothing
oBooks = Nothing
oBook = Nothing
oSheets = Nothing
oSheet = Nothing
System.GC.Collect()
 
Desconocido
Enviado - 11/10/2004
 
No creo que sea la respuesta que necesites o que estes esperando, pero en primera yo utilizo el OWC (Object Web Components) de Microsoft, que me permite accesar y cerrar objetos de Excel, pero como para variar tengo varios inconvenientes, como el no poder crear varias hojas, hay algunas (muy poco usadas) pero siempre funciones que no reconoce esta clase.
Por otra parte yo quise utilizar el Excel y/o el Word para generar mis documentos pero me dice que necesito permisos que le de permisos al usuario de ASP, ya le di permisos al usuario a todo mi disco para (claro fui haciendolo en donde yo pensaba necesitaba hasta que termine por darle permiso a mi disco completo para poder realizar algo y ni aun asi me dejo, si me comentas que hiciste al respecto, talvez encontremos la solucion a tu problema.
Saludos
 
Desconocido
Enviado - 20/10/2004
 
Tenia el mismo problema que tu, esto se debe a que Asp.Net no maneja bien el Microsoft.Office.Core y en mi caso entrega "error: an exception of type: {System.Runtime.InteropServices.COMException} occurred" y por lo tanto no logra cerrar completamente la instancia del proceso Excel. Me fue imposible solucionar este error pero si agregas el siguente codigo al cerrar la aplicacion Excel puedes al menos evitar que quede ejecutandose la instancia y liberar los recursos que ocupa.

oExcel.Quit()
oExcel = Nothing
Dim myProcesses() As System.Diagnostics.Process
Dim myProcess As System.Diagnostics.Process
' Retorna un array con todas las instancias de "EXCEL".
myProcesses = System.Diagnostics.Process.GetProcessesByName("EXCEL")
For Each myProcess In myProcesses
myProcess.Kill()
Next
:
:

OJO!!! que este codigo elimina tambien todas demas las instancias de Excel que esten en ejecución por lo que debes tener cuidado
 
Desconocido
Enviado - 15/11/2004
 
Lo he modificado un poco para que solo cierre el proceso que lleva menos tiempo cargado. Para mi caso será siempre el adecuado ya que lo abro y cierro rapidamente. Os pego el codigo, si alguien se le ocurre algo mejor que lo diga para todos ;)

System.Diagnostics.Process[] procs;
procs = System.Diagnostics.Process.GetProcessesByName("EXCEL");
if (procs.Length>0)
{
DateTime fecha=procs[0].StartTime;
int proceso=0;
for (int p=1;p<procs.Length;p++)
{
if (fecha< procs[p].StartTime)
{
fecha=procs[p].StartTime;
proceso=p;
}
}
procs[proceso].Kill();
}

http://hhdirecto.webcindario.com
 
 

 

Contactos myStudio Network