Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание excel из memorystream, Как отобразить содержимое в браузер 
V
    Опции темы
Annihilator
Дата 10.9.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: нет
Всего: 3



Добрый вечер,товарищи. Проблема в следующем. В MemoryStream находится содержимое excel файла. Как его вывести в браузер? У меня все время окно с предложением сохранить вылазит. Пробовал что-то типа

Код

            byte[] byteArr = (byte[])Array.CreateInstance(typeof(byte), theStream.Length);
            theStream.Position = 0;
            theStream.Read(byteArr, 0, (int)theStream.Length);
            theStream.Close();
            Response.Clear();
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("content-disposition", "attachment; filename=ExportedTo.xls");
            Response.BinaryWrite(byteArr);
            Response.End();

не помогло.
 Или надо плагин специальный ставить для отображения таких данных?

Это сообщение отредактировал(а) Annihilator - 10.9.2009, 20:50


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Crypton
Дата 10.9.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 9.10.2006
Где: США, Санкт-Петерб ург

Репутация: 2
Всего: 2



Цитата(Annihilator @ 10.9.2009,  13:48)
Добрый вечер,товарищи. Проблема в следующем. В MemoryStream находится содержимое excel файла. Как его вывести в браузер? У меня все время окно с предложением сохранить вылазит. Пробовал что-то типа

Код

           ...

не помогло.
 Или надо плагин специальный ставить для отображения таких данных?

В смысле вывести? Как текст? или выдать правильно файл?

Код


theStream.Position = 0;
byte[] buffer  = new byte[1024];
int read = 0;
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment; filename=ExportedTo.xls");
do{
 read = theStream.Read(buffer, 0, buffer.Length);
 Response.OutputStream.Write(buffer, 0, read);
}while(read>0);
Response.End();


Это сообщение отредактировал(а) Crypton - 10.9.2009, 21:20
--------------------
«Все, что вы знаете — ложь» Теория мироздания 
PM MAIL WWW ICQ Skype   Вверх
Annihilator
Дата 11.9.2009, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: нет
Всего: 3



Цитата(Crypton @  11.9.2009,  01:19 Найти цитируемый пост)
В смысле вывести? Как текст? или выдать правильно файл?

Да, именно вывести точно так же, с ячейками, данными, как будто в excel`е просматриваем. Попробовал, то что ты написал, все равно диалог на сохранение/открытие выдает диалог и ничего не выводит.


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Crypton
Дата 11.9.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 9.10.2006
Где: США, Санкт-Петерб ург

Репутация: 2
Всего: 2



А, ну это пример более-менее правильной отдачи файла чем у тебя. smile


а про вывод данных... тут местами проплывала темка где можно юзать OleDb как и для чтения Аксесс БД, так и для Экселя. Попробуй поискать по такой теме.
--------------------
«Все, что вы знаете — ложь» Теория мироздания 
PM MAIL WWW ICQ Skype   Вверх
Annihilator
Дата 12.9.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: нет
Всего: 3



Через OLE DB это совсем другая тема. Мне было нужно удостоверится, что просто так из ИМЕННО стрима форматированные данные не вытащишь. Либо придется парсер писать что-то типа Excel->HTML


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Любитель
Дата 12.9.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Crypton @  11.9.2009,  16:29 Найти цитируемый пост)
А, ну это пример более-менее правильной отдачи файла чем у тебя.

По сути он отличается лишь буферизованным чтением потока и отсутствием извращений с копированием туда-сюда и рефлексией. Учитывая что поток (по условию) итак весь в памяти - наиболее разумно использовать (ToArray именно от MemoryStream).
Код

Response.BinaryWrite(theStream.ToArray())


Что касается сабжа. Ты указываешь content-disposition в attachment - и этим форсируешь показ файла вне браузера. Для твоей цели нужен inline. Но, собственно, есть другая проблема - ты сможешь в принципе заставить открыть внутри браузера экселевский файл кого-либо кроме ИЕ? Так вот, если у тебя не ИЕ-онли проект, то надо действительно создать страничку просто рендерющую в хтмл нужный контент.


--------------------
PM MAIL ICQ Skype   Вверх
Crypton
Дата 13.9.2009, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 9.10.2006
Где: США, Санкт-Петерб ург

Репутация: 2
Всего: 2



Цитата

Учитывая что поток (по условию) итак весь в памяти - наиболее разумно использовать (ToArray именно от MemoryStream).


Сабж чисто для примера smile


--------------------
«Все, что вы знаете — ложь» Теория мироздания 
PM MAIL WWW ICQ Skype   Вверх
Любитель
Дата 13.9.2009, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



А чем он прям уж правильней варианта автора? smile Кроме лишнего цикла?

Это сообщение отредактировал(а) Любитель - 13.9.2009, 06:33


--------------------
PM MAIL ICQ Skype   Вверх
Crypton
Дата 13.9.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 9.10.2006
Где: США, Санкт-Петерб ург

Репутация: 2
Всего: 2



Цитата(Любитель @ 12.9.2009,  23:32)
А чем он прям уж правильней варианта автора? smile Кроме лишнего цикла?

Относительней smile Думаю сработает получше если происходит передача огромных файлов например с диска. Было такое дело, что нужно было сделать скачивание файлов только авторизованными пользователями через хэндлер а файлы хранились в ~/App_data

Это сообщение отредактировал(а) Crypton - 13.9.2009, 18:10
--------------------
«Все, что вы знаете — ложь» Теория мироздания 
PM MAIL WWW ICQ Skype   Вверх
Любитель
Дата 13.9.2009, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Ладно, я понял smile Но в случае топикстартера твой вариант будет просто медленнее. Впрочем, не в этом дело - так как буфферизация не имеет отношения к вопросу топикстартера.


--------------------
PM MAIL ICQ Skype   Вверх
Annihilator
Дата 15.9.2009, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: нет
Всего: 3



Большое спасибо всем учатсникам. Вопрос считаю закрытым.


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.