Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Загрузка потока в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
1-1127206379
~viper~
2005-09-20 12:52
2005.10.09
разница между датами в виде 22 года 4 месяца 12 дней


3-1125386830
Malign
2005-08-30 11:27
2005.10.09
Скорость работы хранимых процедур значительно ниже запросов


1-1127210855
Суслик
2005-09-20 14:07
2005.10.09
Необъяснимое поведение TEdit.


1-1127069654
antikaban
2005-09-18 22:54
2005.10.09
конвертирование файлов


14-1127307480
Juice
2005-09-21 16:58
2005.10.09
Чего посоветуете для отчетов?