Pergunta

Eu tenho uma aplicação web que fornece arquivos do Excel via IE 7. Ele solicita os arquivos com um HTTP GET a partir de um URL que retorna os dados com um tipo de conteúdo 'application / vnd.ms-excel'. Em seguida, ele abre as planilhas em um IFrame.

Isso tudo funciona bem menos que Excel já está aberto quando uma planilha é baixado. Neste caso, ainda é exibido corretamente, mas reutiliza a instância do Excel que está aberto. Quando o IFrame é fechado, trava Excel. Excel só se torna desbloqueado se o usuário fizer fora do aplicativo web ou se eles baixar um arquivo de um tipo diferente.

Eu tentei ligar a configuração 'Ignorar outras aplicações' em Ferramentas | opções | Geral, mas não resolveu o problema.

Eu também tentei seguindo os passos em esta resposta (como o referência ligada diz 'Esta questão tem sido abordada em Excel 2007 beta 2.') sem sorte.

Existe algum tipo de passo 'eliminação', que eu não estou fazendo atualmente o que impediria o Excel a partir de suspensão?

Versões:

Excel 2003 (11.8220.8221) SP3

IE 7.0.5730.11 (Versões de Atualização: 0)

Foi útil?

Solução 2

Além de Robert resposta , a seguinte linha de (Java) correções de código este problema, na medida em que impede o Excel a partir de suspensão:

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

[NB 'resposta' é um HttpServletResponse]

No entanto, ele força a planilha para ser carregado em uma janela do Excel em vez de ser exibida no iframe ...

Update:. Repor o URL do iframe às forças em branco a instância do Excel para ser descartado e corrige esse problema (sem exigir a mudança Content-Disposition)

Outras dicas

Não sei se isso ajuda, mas ...

eu tinha algum problema semelhante (conteúdo CSV geração on the fly) há muito tempo e tudo o que posso lembrar é que tinha que fazer algo com métodos resposta certa está sendo chamado. O código era algo como isto


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

Infelizmente, isso está completamente fora de suas mãos. Ela realmente depende de qual versão do Excel que têm eo que atualizações foram aplicadas.

Você foi capaz de reproduzir este problema em seu próprio ambiente? Se não, pode ser um problema no computador do cliente. Existe alguma maneira você pode descobrir quais as opções eram ou werent instalado, ou se o Excel tem sido mantida com ele é manchas?

Parece-me que o escritório em si precisa ser reinstalado, se não IE 7 depois disso.

Eu também ficaria em todas as questões de fechamento iFrame. Para testar isso teoria, você poderia postar o iframe para uma nova página (sem iframe) e depois ligar de volta para uma página com iframe e o arquivo excel? Sei que provavelmente não vai' ser uma solução de trabalho para você, mas deve ajudar a eliminar quer se trate de excel, IE7 ou o código iframe ter um bug.

Isto é algo que você é capaz de reproduzir, ou é algo que está sendo relatado a você por um cliente, e você está tentando caçá-lo?

O link que você forneceu ofertas com vários monitores - Eu tenho vários monitores, bem quando eu encaixá meu laptop, e eu encontrei um número de aplicações não respondem bem. Por exemplo, se um aplicativo tenta abrir uma caixa de diálogo modal em um espaço de mesa que não existe mais (por exemplo, no meu "segundo monitor" depois I'veundocked meu laptop), ele irá travar o aplicativo desde que eu posso 't chegar ao caixa. Poderia ser o que está acontecendo aqui?

Outro potencial problema acontece se você está pedindo ao usuário para algum tipo de autenticação quando chegar o arquivo Excel. Em nosso site SharePoint, Excel quer que o usuário se autentique, e se esse modal diálogo de autenticação de alguma forma é empurrado para o fundo, pode ser impossível para chegar à frente novamente. A única maneira é se você matar o processo ou se você fechar o navegador sharepoint, uma vez que termina a solicitação para o arquivo em primeiro lugar.

Espero que isso ajude, e se qualquer um destes dar-lhe mais algumas pistas, publicá-las aqui e vamos começar este resolvido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top