Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Загрузка потока в Excel   Найти похожие ветки 

 
Dmitrich   (2005-08-31 19:19) [0]

Уважаемые, мастера, подскажите можно ли текст файла Excel из переменной типа AnsiString или потока запустить в Excel-е не сохраняя его на компьютер?


 
Fay ©   (2005-08-31 19:21) [1]

2 Dmitrich   (31.08.05 19:19)
перефразируй вопрос


 
Dmitrich   (2005-08-31 19:51) [2]

Есть БД в которой хранятся Excel файлы. И при необходимости их нужно открывать. На данный момент это у меня реализовывается следующим образом:
...
var
 BlobF:AnsiString;
...
BlobF:=Form1.IBQuery1.Fields[2].AsString;
// BlobF сохраняется на жестком диске
ShellExecute(application.MainForm.Handle,pchar("open"),pchar("DOC.xls"+fileStr),nil,pchar("DOCS.xls "),sw_shownormal);

Нужно это сделать без сохранения на ЖД


 
Fay ©   (2005-08-31 20:31) [3]

2 Dmitrich   (31.08.05 19:51) [2]
Никак.


 
Внук ©   (2005-09-01 08:46) [4]

Можно через TOleContainer.


 
Dmitrich   (2005-09-12 20:40) [5]

Внук, можешь по подробней?


 
Внук ©   (2005-09-16 15:56) [6]

Могу, только прошу подождать до следующей недели - очень занят...


 
Внук ©   (2005-09-19 12:36) [7]

У меня ситуация похожая - надо из BLOB-полей БД Oracle доставать хранящиеся там документы Excel и открывать их пользователю. Создание промежуточных файлов на диске нежелательно по соображениям защиты информации.
 Сделал так. Есть компонент TOleContainer, у него метод LoadFromStream. В качестве аргумента принимается TStream, или, разумеется, его наследник. К базе доступ осуществляется через DOA, в его составе есть класс TLOBLocator. Это наследник TStream, у которого, среди прочего, перекрыт метод Read. Если для InterBase такого класса нету, можно его реализовать самому.
 В TOleContainer Excel работает в режиме ограниченной функцицональности, но я добился всего, что было нужно. Можно пользователю предоставить возможность открывать из TOleContainer полнофункциональный Excel в отдельном процессе - смотри свойства AllowActiveDoc, AllowInPlace, AutoActivate.
 В итоге считывание документа из базы сводится к строчке вроде
 FOleContainer.LoadFromStream(DataStream),
где DataStream - TLobLocator из DOA, "нацеленный" предварительно на нужную запись и нужное поле. И никаких промежуточных файлов.


 
Dmitrich   (2005-09-19 16:43) [8]

Да, Внук, я почти во всём разобрался. Я тоже решил использовать OleContainer, внутри приложения! Это даже лучше чем открывать файлы отдельно. Теперь борюсь с Toolbars, т. к. он их кидает куда попало и тяжело скрыть без последствий! Но задача почти решена!!!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.018 c
14-1126636393
syte_ser78
2005-09-13 22:33
2005.10.09
Зацените программу


1-1126656874
igor-567
2005-09-14 04:14
2005.10.09
Время в местном формате


1-1126841879
iskatel
2005-09-16 07:37
2005.10.09
TDataModule & mesages


11-1107914794
dmitry501
2005-02-09 05:06
2005.10.09
Архив форума


4-1123783166
deamon_t
2005-08-11 21:59
2005.10.09
Сделать программу невидимой по Alt+Tab





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский