Pregunta

Tengo una aplicación web que proporciona archivos Excel a través de IE 7. Solicita los archivos con un HTTP GET de una URL que devuelve los datos con un tipo de contenido de 'application / vnd.ms-excel'. Luego abre las hojas de cálculo en un IFrame.

Todo esto funciona bien a menos que Excel ya esté abierto cuando se descarga una hoja de cálculo. En este caso, aún se muestra correctamente pero reutiliza la instancia de Excel que está abierta. Cuando el IFrame está cerrado, Excel se bloquea. Excel solo se desbloquea si el usuario cierra la sesión de la aplicación web o si descarga un archivo de otro tipo.

He intentado activar la configuración 'Ignorar otras aplicaciones' en Herramientas | Opciones | General pero no resolvió el problema.

También he intentado seguir los pasos en esta respuesta (como referencia vinculada dice 'Este problema se ha solucionado en Excel 2007 beta 2.') sin suerte.

¿Hay algún tipo de paso de "eliminación" que no esté haciendo actualmente y que impida que Excel se cuelgue?

Versiones:

Excel 2003 (11.8220.8221) SP3

IE 7.0.5730.11 (Actualizar versiones: 0)

¿Fue útil?

Solución 2

Además de La respuesta de Robert , la siguiente línea de código (Java) soluciona este problema, ya que evita que Excel se cuelgue:

response.setHeader("Content-Disposition", 
    "attachment; filename=\"" + filename + "\"");

[NB 'response' es un HttpServletResponse]

Sin embargo, hace que la hoja de cálculo se cargue en una ventana de Excel en lugar de mostrarse en el IFrame ...

Actualización: El restablecimiento de la URL del IFrame en blanco obliga a eliminar la instancia de Excel y soluciona este problema (sin necesidad de cambiar Content-Disposition ).

Otros consejos

No estoy seguro de si esto ayuda pero ...

Hace mucho tiempo tuve un problema similar (generando contenido CSV sobre la marcha) y todo lo que puedo recordar es que tenía que hacer algo con los métodos de Respuesta correctos que se estaban llamando. El código era algo como esto


Response.Clear();
Response.Buffer = true;

Response.AppendHeader("Content-Disposition", "attachment; filename=export.csv");
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.Cache.SetExpires(DateTime.MinValue);
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetMaxAge(new TimeSpan(1));
Response.ContentType = "text/csv";

Response.ContentEncoding = System.Text.Encoding.Unicode;

...
//Some  writing to the Response.OutputStream
...

Response.Flush();

//I am not sure about the following line:
Response.End(); 

Lamentablemente, esto está completamente fuera de tus manos. Realmente depende de qué versión de excel tienen y qué actualizaciones se han aplicado.

¿Ha podido reproducir este problema en su propio entorno? Si no, puede ser un problema en la computadora del cliente. ¿Hay alguna manera de averiguar qué opciones se instalaron o no se instalaron, o si Excel se ha mantenido con sus parches?

Me parece que la oficina necesita ser reinstalada, si no es que IE 7 después de eso.

También analizaría cualquier problema de cierre de iFrame. Para probar esta teoría, podría publicar el iframe en una página nueva (sin iframes) y luego enlazar de nuevo a una página con iframes y el archivo excel. Me doy cuenta de que probablemente no sea una solución de trabajo para usted, pero debería ayudarlo a eliminar si Excel, IE7 o el código iframe tienen un error.

¿Es esto algo que puedes reproducir o es algo que te informa un cliente y estás tratando de cazarlo?

El enlace que ha proporcionado trata con varios monitores. También tengo varios monitores cuando conecto mi computadora portátil y he detectado que varias aplicaciones no responden bien. Por ejemplo, si una aplicación intenta abrir un cuadro de diálogo modal en un espacio de escritorio que ya no existe (por ejemplo, en mi " segundo monitor " después de haber desconectado mi computadora portátil), se bloqueará la aplicación ya que no puedo llegar a la caja ¿Podría ser eso lo que está pasando aquí?

Otro problema potencial ocurre si le pide al usuario algún tipo de autenticación cuando obtiene el archivo de Excel. En nuestro sitio de SharePoint, Excel quiere que el usuario se autentique, y si ese cuadro de diálogo de autenticación modal se empuja en segundo plano, puede ser imposible volver al frente de nuevo. La única forma es si finaliza el proceso o si cierra el navegador sharepoint, ya que en primer lugar finaliza la solicitud del archivo.

Espero que esto ayude, y si alguno de estos te da más pistas, publícalos aquí y resolveremos esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top