Могу ли я загрузить файл Excel, созданный из потока памяти, со страницы ASP.NET?

У меня есть страница ASP.NET, где пользователь предоставляет идентификатор, а затем мы извлекаем некоторые данные из БД и помещаем их в электронную таблицу Excel. Я хотел бы создать файл Excel в памяти, а затем разрешить пользователю загружать файл. Я мог бы создать файл на сервере, а затем удалить его, но это кажется ненужным. В зависимости от обработки ошибок я мог потенциально потерять файл с таким подходом и т.д.

Возможно ли что-то подобное? Или мне нужно использовать файловый поток?

Кстати, я использую EPPlus в качестве API (быстрое подключение).


person Andrew Dunaway    schedule 19.03.2012    source источник


Ответы (3)


Вы хотите указать заголовки content-type и content-dispisition следующим образом: Response.ContentType = application/vnd.ms-excel работает в IE и Firefox, но не в Safari, затем выполните потоковую передачу файла. После завершения вызовите Response.End(), чтобы остановить выполнение приложения.

Пример кода:

void StreamExcelFile(byte[] bytes)
{
    Response.Clear();
    Response.ContentType = "application/force-download";
    Response.AddHeader("content-disposition", "attachment; filename=name_you_file.xls");
    Response.BinaryWrite(bytes);
    Response.End();
}
person dana    schedule 19.03.2012
comment
Привет... Если я делаю ajax-вызов веб-API, который возвращает поток памяти в формате Excel, как я могу загрузить его в самом браузере? - person Jyotsna Wadhwani; 18.07.2017

Да, рассмотрите возможность использования обработчика HTTP для потоковой передачи файла в браузер из памяти.

http://msdn.microsoft.com/en-us/library/ms972953.aspx

person javram    schedule 19.03.2012

То, что вы ищете, называется общим обработчиком:

http://www.dotnetperls.com/ashx

В двух словах, вам нужно определить тип контекста. Что в вашем случае будет xls или xlsx. Задайте ответ и направьте пользователя к обработчику.

Им будет предложено загрузить файл.

person Khan    schedule 19.03.2012