Текущий архив: 2003.07.07;
Скачать: CL | DM;
Вниз
В поле таблицы БД сохранен файл Excel можно ли открыть его в Exce Найти похожие ветки
← →
antoniz (2003-06-24 12:04) [0]В поле таблицы БД сохранен файл Excel можно ли открыть его в MS Excel без использования временного файла (предварительно не выгружая значение поля в файл). Т.е. требуется загрузить из потока. На сколько я знаю это делается через интерфейсы IPersistStream и IPersistStorage. Но не знаю как это сделать. Может кто пример даст или стаью по этой теме
← →
Serginio (2003-06-24 14:06) [1]Посмотри какй ProgID загружает в контейнер. Там Лист Microsoft Exсel. Он как раз и поодерживает IPersistStream; Посмотри TOleComponent.
← →
Serginio (2003-06-24 14:08) [2]Excel.Sheet.5
{00020810-0000-0000-C000-000000000046}
← →
antoniz (2003-06-24 14:42) [3]Что-то я не понял эту идею
← →
Serginio (2003-06-24 14:56) [4]Для непонятливых. Загружай в ОлеКонтейнер Лист Microsoft Exсel. У олеконтейнера есть метод LoadFromStream(Stream: TStream);
Или
Var
List:Idispatch;
Stream:IPersistStream;
Begin
List:=CreateOLeObject("Excel.Sheet.5");
Stream:=List As IPersistStream;
← →
antoniz (2003-06-24 15:07) [5]А как файл в ёкселе открыть, я вот это не понял
← →
antoniz (2003-06-24 15:12) [6]Кстати, забыл сказать такой код у меня не проходит, я уже задавал вопрос почему пишется ошибка, что "interface not supported". Я почему и не знаю как дальше двигаться. А OleContainer я использвать не хочу. Идея следующая выгрузить из блоба данные в поток. Потом эти данные закинуть в переменную типа IStream. Далее из нее можно в переменную IPersistStream данные закачать. Только как эту переменную с ёкселем связать я не знаю.
← →
Serginio (2003-06-24 15:22) [7]TOleControl поддерживает кучу интерфейсов в состав который входят IPersistStreamInit и IPersistStorage. Через них можно извлечь и записать данные через их методы CopyTo. Но все зависит как ты сохраняешь.
← →
antoniz (2003-06-24 15:31) [8]Так а без него не подскажешь как сделать. Я уже 4-й день парюсь, в инете не фига не нашел, тут парень один ссыдку кидал, она не работает.
← →
Serginio (2003-06-24 15:33) [9]Загружай данные в IStorage. Посмотри код OleContainer LoadFromStream и SaveToStream. Если ты сохраняешь файл целиком, то тебе придется обрабатывать IStorage .Это обыкновенный Doc файл.
← →
antoniz (2003-06-24 15:37) [10]Кинь пример если не сложно, раз такое делал, а то блин че-нить не получится, опять в запарку уйду.
← →
Serginio (2003-06-24 15:45) [11]Вот пример с F1Book копирования данных
procedure TForm1.Button1Click(Sender: TObject);
var stg1,stg2:IPersistStorage; st:IStorage;
begin
st:=nil;
stg1:=IDispatch(F1Book1.OleObject) as IPersistStorage;
stg2:=IDispatch(F1Book2.OleObject) as IPersistStorage;
OleCheck(StgCreateDocfile(nil, STGM_READWRITE
or STGM_SHARE_EXCLUSIVE or STGM_CREATE, 0,St));
OleCheck(stg1.Save(st,false));
If assigned(st) Then
stg2.Load(st)
end;
← →
Serginio (2003-06-24 15:55) [12]http://www.sources.ru/delphi/internet/save_html_source_to_disk.shtml
http://adam.stup.ac.ru/Developer/ArticleDetail.aspx?ar=676&l=n&mi=92&mic=244
http://www.bytemag.ru/Article.asp?id=383
Страницы: 1 вся ветка
Текущий архив: 2003.07.07;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c