powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / формирование Excel файла
10 сообщений из 10, страница 1 из 1
формирование Excel файла
    #37783088
гость05052012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Дорабатываю вэб сайт, проект MVC 3, нужно добавить формирование небольшого файла Excel на основе шаблона и выдачу его пользователю. Эксель на данном вэб серваке стоит (стоял уже). Отчет формируется последством OLE Automation, т.е.

Microsoft.Office.Interop.Excel.Application exc = new Application();
exc.DisplayAlerts = false;
exc.Workbooks.Open("ТестШаблон.xlt");
exc.Cells[1, 1] = barcode;
exc.Run("CreateReport");

Вопрос собственно вот в чем:

Делаю вот так:

httpResponse.ContentType = "application/vnd.ms-excel";
httpResponse.AddHeader("Content-Disposition inline", "attachment;filename=\"Report.xls\"");

using (MemoryStream memoryStream = new MemoryStream())
{
exc.ActiveWorkbook.SaveAs(memoryStream);
memoryStream.WriteTo(httpResponse.OutputStream);
memoryStream.Close();
}

httpResponse.End();

специально проверил установив сво-во Visible проверил что отчет нормально формируется, но пользователю отправляется пустой лист, даже не шаблон (без шапки). Если сохраняю не в поток, а в файлик на диске, а затем httpResponse.WriteFile то все ок.
Почему может не сохраняться в поток?
...
Рейтинг: 0 / 0
формирование Excel файла
    #37783131
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гость05052012,

memoryS


1) как создается объект httpResponse?
2) Пробовали ли вы сохранить сначала файл на диск, а потом закинуть в респонз (просто в качестве теста конечно)?

httpResponse.ContentType = "application/vnd.ms-excel";
httpResponse.WriteFile("~/rep1.xls");

3) Проверьте еще такую комбинацию:

memoryStream.Position = 0;
httpResponse.ContentType = "application/vnd.ms-excel";
httpResponse.AddHeader("content-disposition", "attachment; filename=\"rep1.xls\"");
httpResponse.BinaryWrite(memoryStream.ToArray());
httResponse.CompleteRequest();
...
Рейтинг: 0 / 0
формирование Excel файла
    #37783831
гость05052012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
n3wb13,

1)
HttpResponseBase httpResponse = Response;
httpResponse.Clear();

2)
Да, так и заработало. Хочу просто от сохранений отказаться.
...
Рейтинг: 0 / 0
формирование Excel файла
    #37783914
гость05052012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3)
httpResponse.CompleteRequest(); // ругается, что такой метод не определен
...
Рейтинг: 0 / 0
формирование Excel файла
    #37783922
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гость05052012,

хм, может я чего подзабыл, используйте тогда старый End();
...
Рейтинг: 0 / 0
формирование Excel файла
    #37783947
гость05052012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
n3wb13,

Попробовал, так то же самое. Пустой файл выдает.
...
Рейтинг: 0 / 0
формирование Excel файла
    #37784774
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только сейчас заметил опечатку у вас в 1м сообщении:
и inline и attachment одновременно, честно говоря не помню кидает ли в таком случае эксепшены или нет. Хотя раз файл сохраненный на диск отправляется, то видимо такой опечатки в реальном коде нет, или есть?
httpResponse.AddHeader("Content-Disposition inline", "attachment;filename=\"Report.xls\"");
...
Рейтинг: 0 / 0
формирование Excel файла
    #37788011
гость05052012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
n3wb13,

спасибо за ответ. Inline нет в рабочей версии, опечатался. Впечатление такое, что просто эксель в поток не сохраняет. Заметил что после отработки данного кода, в папке мои документы появляется файлик с именем "System.IO.MemoryStream", если к нему приделать расширение XLS, то выясняется что это и есть мой отчет......
...
Рейтинг: 0 / 0
формирование Excel файла
    #37788067
n3wb13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гость05052012,

Workbook.SaveAs - метод

void SaveAs(
Object Filename,
Object FileFormat,
Object Password,
Object WriteResPassword,
Object ReadOnlyRecommended,
Object CreateBackup,
XlSaveAsAccessMode AccessMode,
Object ConflictResolution,
Object AddToMru,
Object TextCodepage,
Object TextVisualLayout,
Object Local
)

нигде не указано, что поддерживается сохранение в MemoryStream, в результате он вашу мемориСтрим конвертирует в стринг и сохраняет в папке по умолчанию, т.е. моих документах
...
Рейтинг: 0 / 0
формирование Excel файла
    #37788188
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гость05052012OLE Automation
На свалку.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / формирование Excel файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]