LingaMurthy Ответов: 0

Officeopenxml memorystream.writeto(response.outputstream) работает на одной странице и не работает на другой


Я использую Visual Studio с C# на страницах ASPX. Веб-приложение.
Я использую OfficeOpenXml для записи файла Excel.

Я написал следующий код для записи файла excel.

Ответ.Четкий();
Ответ.Буфер = true;
Ответ.Кодировка = "";
Ответ.Значение contentType = "применение/донгов.openxmlformats-officedocument.квалификатором.лист";
Ответ.AddHeader("расположения контента", "вложение; имя файла=StateList_" + Датавремя.Сейчас.Метод toString("yyyyMMyyHHmmss") + ".XLSX-файл");
var myMS = Новый Поток памяти();
превосходить.SaveAs(myMS);
myMS.Требуется Написание(Ответ.Выходной поток);
Ответ.Промывать();
Свойство HttpContext.Тока.ApplicationInstance.CompleteRequest();
Ответ.Конец();


Также я добавил событие VerifyRenderingInServerForm.

Этот код работает на одной странице и не работает на другой. Может ли кто-нибудь помочь мне в том, что я мог сделать неправильно?

Что я уже пробовал:

Я также попробовал другой вариант следующим образом:
строка mydocpath = System.Environment.GetFolderPath(Environment.Специальная папка.Мои документы);
DirectoryInfo outputDir = новый DirectoryInfo(mydocpath);

FileInfo может excelFile = FileInfo на новый(outputDir.Полное Имя + @"\StateList_" + Датавремя.Сейчас.Метод toString("yyyyMMyyHHmmss") + ".XLSX-файл");

превосходить.SaveAs(excelFile);

Этот код работает и создает файл на стороне сервера. Мне нужно сохранить файл на стороне клиента независимо от операционной системы.

F-ES Sitecore

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

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

Richard Deeming

Что не работать значит? Вы получаете ошибку?

Ваш второй блок кода, очевидно, не будет работать; код выполняется на сервере и не имеет доступа к файловой системе пользователя.

LingaMurthy

Я не получаю никакой ошибки. на одной странице он дает подсказку для сохранения файла. на другой странице запрос на сохранение не приходит. сравнил как aspx, так и код, лежащий в основе c#. ничего не найдено, если вы дадите мне почту, я могу отправить вам файлы, так что любая помощь может быть оказана... заранее спасибо

0 Ответов