2013-03-29 3 views
4

Я использую этот код для экспорта/открытия файлов (pdf/xls/doc).Проблема экспорта файла C#

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

Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.Charset = "UTF-8"; 
Response.ContentType = mimeType; 

Response.AppendHeader("content-disposition", "inline; filename=" + fileName + "." + extension); 

Response.BinaryWrite(bytes); 
Response.End(); 

Когда я открываю файл документа с Word и нажимаю export на xls или pdf, ничего не происходит, пока я не закрою Word. После закрытия Word я уже могу открыть xls и pdf.

Эта проблема возникает, когда я открываю xls с Excel.

В чем причина?

+2

Не может установить режим 'FileOpen' на потоке .. вы можете показать, как вы объявляете поток ..? также посмотрите на эту публикацию для примера и попытайтесь использовать что-то вроде этого: FileAccess.ReadWrite, FileShare.None' http://stackoverflow.com/questions/3889521/response-addheadercontent-disposition-not-opening-file-in- ie6 – MethodMan

ответ

1

В зависимости от версии слова вы используете, я бы сказал, что проблема возникает из inlinecontent-disposition

В последних версиях Word (видели в Word 2010), он пытается открыть документ в режиме WEBDAV при inline , что может вызвать проблемы (замки, недостающие печенье или верительных при попытке экспортировать/распечатать документ)

Вы можете посмотреть на сетевой трафик, чтобы увидеть, если это поведение Webdav участвует, и посмотреть, если content-dispositionattachment решает эту проблему.

Надеется, что это поможет

2

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

+7

При всем уважении, я думаю, этот вопрос относится к SO. –

+3

Вопрос о том, если это вопрос программирования или нет, появился на [meta] (http://meta.stackexchange.com/q/174144/158605) – Rachel

+0

@Rachel Хорошо, знал о мета, я удаляю комментарии , и линия, которую все готово удалил Бен (нишевое голосование, чтобы закрыть или что-то еще). – Aristos

Смежные вопросы