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

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
1-43641
Мыш
2004-03-02 11:43
2004.03.14
TChart, как задать нач. и конечное значение горизонтальной оси?


14-43794
uw
2004-02-18 16:33
2004.03.14
Новости с подлодки


3-43287
XAdmin
2004-01-23 13:36
2004.03.14
ADOCommand Error Размер поля недостаточен


14-43785
zamkom
2004-02-18 16:36
2004.03.14
Не работает поиск.


6-43724
ThreeDHead
2004-01-04 23:46
2004.03.14
Вопрос про создание колиентского потока в TTCPServer





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