Как предотвратить зависание Excel 2003 после открытия электронной таблицы в IE?

StackOverflow https://stackoverflow.com/questions/201355

Вопрос

У меня есть веб-приложение, которое предоставляет файлы Excel через IE 7.Он запрашивает файлы с помощью HTTP GET по URL-адресу, который возвращает данные с типом контента «application/vnd.ms-excel».Затем он открывает электронные таблицы в IFrame.

Все это работает нормально, если только Excel не открыт при загрузке электронной таблицы.В этом случае он по-прежнему отображается правильно, но повторно использует открытый экземпляр Excel.Когда IFrame закрыт, Excel зависает.Excel становится разблокированным только в том случае, если пользователь выходит из веб-приложения или загружает файл другого типа.

Я попытался включить настройку «Игнорировать другие приложения» в разделе «Инструменты» | Варианты | Общие, но это не решило проблему.

Я также попробовал выполнить шаги, описанные в этот ответ (как связанная ссылка говорит: «Эта проблема решена в Excel 2007 beta 2.»), но безуспешно.

Есть ли какой-то шаг «утилизации», который я сейчас не делаю, чтобы предотвратить зависание Excel?

Версии:

Excel 2003 (11.8220.8221) SP3

IE 7.0.5730.11 (версии обновления:0)

Это было полезно?

Решение 2

Дальше к Ответ Роберта, следующая строка кода (Java) устраняет эту проблему, предотвращая зависание Excel:

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

[NB «ответ» — это HttpServletResponse]

Однако при этом таблица загружается в окно Excel, а не отображается в IFrame...

Обновлять: Сброс URL-адреса IFrame на пустое значение приводит к удалению экземпляра Excel и устраняет эту проблему (без необходимости Content-Disposition изменять).

Другие советы

Не уверен, что это поможет, но...

У меня была похожая проблема (генерация CSV-контента на лету) давно, и все, что я помню, это то, что нужно было что-то делать с вызовом правильных методов ответа.Код был примерно такой


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

К сожалению, это совершенно не в вашей власти.Это действительно зависит от того, какая у них версия Excel и какие обновления были применены.

Удалось ли вам воспроизвести эту проблему в своей среде?Если нет, возможно, проблема на клиентском компьютере.Есть ли способ узнать, какие опции были установлены, а какие нет, и поддерживается ли Excel с помощью исправлений?

Мне кажется, сам офис надо переустанавливать, а то и IE 7 после этого.

Я бы также рассмотрел любые проблемы с закрытием iFrame.Чтобы проверить эту теорию, вы можете опубликовать iframe на новой странице (без iframe), а затем дать ссылку на страницу с iframe и файлом Excel?Я понимаю, что это, вероятно, не будет для вас рабочим решением, но оно должно помочь вам определить, есть ли ошибка в Excel, IE7 или коде iframe.

Можете ли вы это воспроизвести или вам об этом сообщил клиент, и вы пытаетесь это выследить?

Предоставленная вами ссылка касается нескольких мониторов. У меня также есть несколько мониторов, когда я подключаю свой ноутбук, и я обнаружил, что ряд приложений не реагируют должным образом.Например, если приложение попытается открыть модальное диалоговое окно в пространстве рабочего стола, которого больше не существует (например, на моем «втором мониторе» после того, как я отстыковал свой ноутбук), оно заблокирует приложение, поскольку я могу Доберёмся до коробки.Может быть, это то, что здесь происходит?

Другая потенциальная проблема возникает, если вы запрашиваете у пользователя какую-либо аутентификацию при получении файла Excel.На нашем сайте SharePoint Excel требует, чтобы пользователь прошел аутентификацию, и если это модальное диалоговое окно аутентификации каким-то образом перейдет на задний план, вернуться на передний план может быть невозможно.Единственный способ — завершить процесс или закрыть браузер SharePoint, поскольку это в первую очередь прекращает запрос файла.

Надеюсь, это поможет, и если что-то из этого даст вам еще какие-то подсказки, опубликуйте их здесь, и мы решим проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top