2008-10-14 4 views
1

J'ai une application web qui fournit des fichiers Excel via IE 7. Elle demande les fichiers avec un HTTP GET à partir d'une URL qui renvoie les données avec un type de contenu 'application/vnd.ms-excel'. Il ouvre ensuite les feuilles de calcul dans un IFrame.Comment puis-je empêcher Excel 2003 de se bloquer après l'ouverture d'une feuille de calcul dans Internet Explorer?

Tout cela fonctionne correctement, sauf si Excel est déjà ouvert lors du chargement d'une feuille de calcul. Dans ce cas, il est toujours affiché correctement mais réutilise l'instance d'Excel qui est ouverte. Lorsque l'IFrame est fermé, Excel se bloque. Excel n'est déverrouillé que si l'utilisateur se déconnecte de l'application Web ou s'il télécharge un fichier d'un type différent.

J'ai essayé d'activer le paramètre 'Ignorer les autres applications' sous Outils | Options | Général mais cela n'a pas résolu le problème.

J'ai également essayé de suivre les étapes dans this answer (comme le linked reference dit «Ce problème a été résolu dans Excel 2007 beta 2.») sans succès.

Existe-t-il une sorte d'étape de «mise au rebut» que je ne fais pas actuellement et qui empêcherait Excel d'être suspendu?

Versions:

Excel 2003 (11.8220.8221) SP3

IE 7.0.5730.11 (Mise à jour Versions: 0)

+0

Je n'ai pas de réponse, mais quelle version d'Excel? Avez-vous essayé Excel "Ignorer les autres applications" sous Outils, Options, Général? –

+0

J'ai ajouté les numéros de version à la question. Je n'ai pas essayé ce réglage, je vais essayer. –

+0

Malheureusement, l'activation du paramètre 'Ignorer les autres applications' n'a pas résolu le problème. –

Répondre

1

Suite à Robert's answer, le code de ligne de (Java) suivant résout ce problème, en ce sens qu'il empêche Excel de pendaison:

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

[ 'réponse' NB est un HttpServletResponse]

Cependant, il force le tableur à être chargé dans une fenêtre Excel plutôt que d'être affiché dans le IFrame ...

Mise à jour: La réinitialisation de l'URL de l'IFrame à l'espace vide force l'Excel instance à être disposé et corrige ce problème (sans nécessiter la modification Content-Disposition).

0

Malheureusement, cela est complètement hors de vos mains. Cela dépend vraiment de quelle version d'Excel ils ont et quelles mises à jour ont été appliquées.

+0

Pouvez-vous me signaler les détails de la version Excel où ce problème a été corrigé (articles de la base de connaissances, etc.)? –

0

Avez-vous été en mesure de reproduire ce problème dans votre propre environnement? Sinon, cela peut être un problème sur l'ordinateur du client. Est-il possible de savoir quelles sont les options qui ont été installées ou non, ou si Excel a été maintenu avec ses correctifs?

Il me semble que le bureau lui-même doit être réinstallé, sinon IE 7 après cela.

Je voudrais également examiner tous les problèmes de fermeture iFrame. Pour tester cette théorie, vous pouvez poster l'iframe sur une nouvelle page (sans iframes), puis revenir à une page avec les iframes et le fichier Excel. Je me rends compte que ce ne sera probablement pas une solution de travail pour vous, mais cela devrait vous aider à éliminer si c'est excel, IE7 ou le code iframe ayant un bug.

+0

Oui. C'est reproductible dans mon environnement. Chris Lively a suggéré que c'est un problème connu. –

0

Est-ce quelque chose que vous êtes capable de reproduire, ou est-ce que quelque chose vous est rapporté par un client, et que vous essayez de le rechercher?

Le lien que vous avez fourni concerne plusieurs moniteurs - j'ai également plusieurs moniteurs lorsque je branche mon ordinateur portable, et j'ai trouvé un certain nombre d'applications qui ne répondent pas bien. Par exemple, si une application tente d'ouvrir une boîte de dialogue modale dans un espace de bureau qui n'existe plus (par exemple, sur mon "deuxième moniteur" après que j'ai rechargé mon ordinateur portable), elle verrouillera l'application puisque je peux pas arriver à la boîte. Cela pourrait-il être ce qui se passe ici?

Un autre problème potentiel se produit si vous demandez à l'utilisateur une sorte d'authentification lorsqu'il obtient le fichier Excel. Sur notre site SharePoint, Excel veut que l'utilisateur s'authentifie, et si cette boîte de dialogue d'authentification modale est mise en arrière-plan, il peut être impossible de revenir au premier plan. La seule manière est si vous tuez le processus ou si vous fermez le navigateur de sharepoint, puisque cela termine la demande pour le dossier en premier lieu.

Espérons que cela aide, et si l'un ou l'autre d'entre eux vous donne d'autres indices, postez-les ici et nous le ferons résoudre.

+0

C'est un problème que je vois en développement. Il n'est cependant pas limité à ma machine, étant reproductible sur au moins une autre boîte de développement. Bien que le lien soit pour plusieurs moniteurs, c'est la partie «lancement d'un nouveau processus Excel» qui peut résoudre le problème. Je n'ai pas encore essayé ... –

+0

Les instructions pour lancer un nouveau processus sont quelque chose qui doit être fait sur l'ordinateur client, ce qui est hors de votre contrôle puisque vous avez une application web sans installation. Ces machines sont-elles contrôlées, de sorte que vous pouvez modifier ce paramètre si nécessaire? – SqlRyan

+0

Actuellement le problème se manifeste sur une boîte de développement. Cependant, le logiciel sera éventuellement déployé sur les machines clientes (plutôt qu'hébergé). S'il n'y a pas d'autre solution, cependant, je peux au moins documenter le paramètre dans un «guide de dépannage» (en particulier si c'est la version Excel spécifique) –

1

Je ne sais pas si cela aide, mais ...

J'ai eu un problème similaire (la génération de contenu CSV à la volée) il y a longtemps, et tout ce que je me souvienne est qu'il fallait faire quelque chose avec des méthodes de bonne réponse étant appelé. Le code était quelque chose comme ça


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(); 

+0

Le code côté serveur est Java, mais je vais jeter un oeil pour voir si il y a quelque chose d'évident à ne pas rincer ou fermer les cours d'eau. Merci. –

+0

L'en-tête 'Content-Disposition' empêche l'accrochage d'Excel (mais voir ma réponse). –

Questions connexes