Excel .xlsx скачать - сообщение об ошибке нарушения совместного использования при комбинации Open и Save - PullRequest
0 голосов
/ 23 августа 2011

Я нашел этот вопрос несколько раз, но окончательных ответов пока нет.Похоже, что приличное решение может помочь довольно многим людям.

Итак, мы создаем файл Excel (.xlsx) на сервере и загружаем его клиенту, используя «вложение» для размещения контента.Откроется диалоговое окно «Открыть», и все работает нормально, если вы выберете «Сохранить» или «Открыть», а затем «Сохранить как» ... Однако, если вы выберете «Открыть», а затем нажмите кнопку «Сохранить», Excel на мгновение зависнет, а затем отобразит сообщение:изменения не могут быть сохранены в 'Export [5] .xlsx' из-за нарушения общего доступа.Попробуйте сохранить в другой файл.затем: файл, который вы пытаетесь открыть 'F8CAC020.IE5 \ HM2NBE5C \ F8CAC020', находится в другом формате, чем указано в расширении файла.Перед открытием файла убедитесь, что файл не поврежден и поступил из надежного источника.Вы хотите открыть файл сейчас?затем: вы наконец получаете диалоговое окно Сохранить как: (при условии, что вы нажали 'Да').

Код для создания файла:

Response.Clear()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AppendHeader("content-disposition", "attachment;filename=Export.xlsx")
Response.AddHeader("Content-Length", New System.IO.FileInfo(NewFile).Length)
Response.TransmitFile(NewFile)
Response.Flush()

Если вы удалите заголовок размещения содержимого, выполучить правильное поведение в Excel, но с неправильным именем и без гарантии того, что документ Excel не будет отображаться в браузере (в зависимости от настроек клиента).Если вы нажмете «Открыть», а затем «Сохранить», вы получите сообщение: «default.aspx» только для чтения.Чтобы сохранить копию, нажмите кнопку «ОК», затем присвойте книге новое имя в диалоговом окне «Сохранить как».

Поэтому вопрос заключается в том, как объединить два поведения в разумное: получите красивое сообщение об ошибке, приведенное выше., когда вы пытаетесь открыть и затем сохранить загруженный файл, но также указать, что документ должен быть загружен с заданным по умолчанию именем файла.

Cheers,

Джеймс

1 Ответ

0 голосов
/ 17 ноября 2011

Я полагаю, что существует ошибка в коде загрузки файла IE, которая не подтверждает завершенную передачу файла (загрузку) с веб-сервера, таким образом, оставляя соединение с загруженным (временным) файлом открытым при попытке сохранения.Это генерирует сообщение «нарушение совместного доступа».Я пробовал тот же код с FireFox, и я не получаю тот же результат, что, несомненно, заставляет меня думать, что это специфическая для IE проблема.

К сожалению, учитывая, что я считаю, что это ошибка в IEЯ не думаю, что в настоящее время существует четкое решение этой проблемы.

...