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

Вниз

Вопрос по Excell   Найти похожие ветки 

 
YurikGl   (2004-03-01 19:42) [0]

Пока есть люди разбирающиеся в Excell, задам вопрос.
Как изменить в Excell ориентацию листа на альбомный?
Проблема в том, что у меня Delphi "не видит" свойства объекта WorkSheet и т.п. (напр.ActiveSheet) через который это делает VBA.


 
jack128   (2004-03-01 19:48) [1]


> Проблема в том, что у меня Delphi "не видит" свойства объекта
> WorkSheet
Я так понимаю, имеется в виду TExcelApplication и ежи с ними?
Используй позднее связование..


 
YurikGl   (2004-03-01 19:54) [2]

E1: TExcelApplication;

Вот код
E1.Connect;
E1.Visible[0]:=true;
E1.Workbooks.Add(Null,1);

VBA дает
ActiveSheet.PageSetup.Orientation = xlLandscape

Но свойства PageSetup у ActiveSheet нет. У него вообще почти свойств нет. Только GetTypeInfo и т.п.

Думаешь поздним связыванием это решится?

З.Ы. Если есть под рукой, можно примерчик. pls


 
jack128   (2004-03-01 19:57) [3]

Конечно решишь..
Заодно избавишься от
> E1.Visible [0]:=true;
> E1.Workbooks.Add (Null,1);
которые в падавляющем большенстве случаев не нужны..


 
YurikGl   (2004-03-01 20:36) [4]

Хм... если использовать сервер excelapplication а не
XL := CreateOleObject("Excel.Application");
WB := XL.Workbooks.Add;
WS := WB.WorkSheets.Add;

То данные добавляются раз в 10 быстрее...
Но нет доступа к ActiveSheet.PageSetup.Orientation = xlLandscape


 
jack128   (2004-03-01 20:43) [5]


> Хм... если использовать сервер excelapplication а не
> XL := CreateOleObject("Excel.Application"
> То данные добавляются раз в 10 быстрее...

Эксперементов не проводил, но вполне естественно, что ранне связование быстрее позднего. Это плата за определенную независимость от версии Ole сервера


 
YurikGl   (2004-03-01 20:45) [6]

Медленнее идет форматирование текста, т.е. шрифты, выравнивание и т.п. Попробую сделать два соединения к excel часть вещей через одно, часть через другое.


 
jack128   (2004-03-01 20:57) [7]

Что типа этого?
var
XL: OleVariant;
begin
XL := OleVariant(ExcelApplication1.Application);
XL.ActiveSheet.PageSetup.Orientation = xlLandscape;


 
YurikGl   (2004-03-01 21:14) [8]

Фишка не прошла

xl:=CreateOleObject("Excel.Application");
WB := xl.Workbooks.Add;
WS := WB.WorkSheets.Add;
xl.Visible := True;

E1.Connect;
....
E1.Range["A"+IntToStr(l),"A"+IntToStr(l)].formula:=ADODataSetVPERI.Fields[3].value;

Если с Excel есть связывание через xl:=CreateOleObject("Excel.Application"); то при добавлении даже через ExcelApplication прога тормозит.


 
YurikGl   (2004-03-01 21:18) [9]

В связи с этим возникает вопрос: можно ли связаться через xl:=CreateOleObject("Excel.Application") с уже работающим екселем или как-то "отвязаться"?


 
jack128   (2004-03-01 21:27) [10]


> Если с Excel есть связывание через xl:=CreateOleObject("Excel.Application");
> то при добавлении даже через ExcelApplication прога тормозит.
Что тут не так. Поздне связование "тормазит" потому что ри его использовании вызывается GetIDsOfNames и Invoke, а при раннем связовании напрямую вызываются методы интерфейсов... Даже не знаю, что сказать.

Попробуй так > jack128 © (01.03.04 20:57) [7] , но это уже шаманство...


 
YurikGl   (2004-03-01 21:34) [11]

Приведу другой код
E1:TExcelApplication;

xl:=CreateOleObject("Excel.Application");
E1.Connect;
E1.Visible[0]:=true;
E1.Workbooks.Add(Null,1);
....
здесь всякое добавление данных, форматирование через E1.

Этот код тормозит.
Если закомментировать строку xl:=CreateOleObject("Excel.Application");, то E1 сам запустит Excel и тормоза пройдут.



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

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.012 c
8-43699
Romaa
2003-11-07 10:18
2004.03.14
TIcon -- только 16 цветов ?


3-43288
tv
2004-02-12 12:24
2004.03.14
Unicode строки в поле типа Memo


14-43786
BALU1111
2004-02-18 17:17
2004.03.14
Борьба со спамом и новый способ выкачивания денег?


3-43252
Пубертанец
2004-02-13 10:13
2004.03.14
Кто знает, как работать с TReferenceField?


4-43959
Zin
2004-01-05 13:57
2004.03.14
Как прочитатать кластер или сектор на диске под NTFS?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский