Можно ли загрузить файл Excel из потока памяти со страницы ASP.NET? - PullRequest
3 голосов
/ 20 марта 2012

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

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

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

Ответы [ 4 ]

9 голосов
/ 20 марта 2012

Вы хотите указать заголовки 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();
}
3 голосов
/ 12 апреля 2013
ExcelPackage pck = new ExcelPackage();
.....
.....
.....

byte[] bfr = pck.GetAsByteArray();
Response.ContentType = "application/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AppendHeader("content-disposition", "attachment; filename=ExcelFileName.xlsx");

Response.OutputStream.Write(bfr, 0, bfr.Length);
Response.Flush();
Response.Close();
1 голос
/ 20 марта 2012

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

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

0 голосов
/ 20 марта 2012

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

http://www.dotnetperls.com/ashx

В двух словах, вам нужно определить тип контекста.Который в вашем случае будет XLS или XLSX.Установите ответ и направьте пользователя к обработчику.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...