Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 проблемма!!! колонтитул в Excel из Forms?  [new]
logmnr
Member

Откуда:
Сообщений: 69
как в колонтитуле проставить текст вида "Страница 1 из 5"?

PROCEDURE execute_sql IS

app ole2.obj_type;
worksheets ole2.obj_type;
myPageSetup ole2.obj_type;
act_ws ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;

BEGIN
set_application_property(cursor_style, 'busy');
app:=ole2.create_obj('Excel.Application');
workbooks:=ole2.get_obj_property(app,'Workbooks');
workbook:=ole2.get_obj_property(workbooks,'add');
worksheets:=ole2.get_obj_property(workbook,'Worksheets');
act_ws:=ole2.get_obj_property(worksheets,'add');
OLE2.set_property(act_ws, 'Name', :БЛОК15.ЭЛЕМЕНТ18);
myPageSetup := OLE2.GET_obj_PROPERTY( act_ws, 'PageSetup' );
OLE2.SET_PROPERTY( myPageSetup, 'Orientation', 2 ); -- xlLandscape
OLE2.SET_PROPERTY( myPageSetup, 'CenterHeader', :БЛОК15.ЭЛЕМЕНТ18 );
---------------------------------------------------------------------------------
OLE2.SET_PROPERTY( myPageSetup, 'CenterFooter', 'Страница &P из &N');
Проблема заключается именно в этой строке, в нижнем колонтитуле выходит
только "Страница из " вместо "Страница 1 из 1"
---------------------------------------------------------------------------------
OLE2.SET_PROPERTY( myPageSetup, 'FitToPagesWide', 1);
OLE2.SET_PROPERTY( myPageSetup, 'FitToPagesTall', 999);
OLE2.SET_PROPERTY( myPageSetup, 'Zoom', False);
OLE2.SET_PROPERTY( myPageSetup, 'LeftMargin',0);
OLE2.SET_PROPERTY( myPageSetup, 'RightMargin',0);
OLE2.SET_PROPERTY( myPageSetup, 'TopMargin',25);
OLE2.SET_PROPERTY( myPageSetup, 'BottomMargin',25);
OLE2.SET_PROPERTY( myPageSetup, 'HeaderMargin',0);
OLE2.SET_PROPERTY( myPageSetup, 'FooterMargin',0);
OLE2.RELEASE_OBJ( myPageSetup ); ole2.set_property(app,'visible',true);
ole2.release_obj(app);
ole2.release_obj(act_ws);
ole2.release_obj(worksheets);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
set_application_property(cursor_style, 'default');
END;

а вот макрос записанный в excel-e
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Страница &P из &N"
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview

Что я сделал неправильно? подскажите.
17 апр 08, 17:33    [5562961]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9278
Excel русский или английский?
17 апр 08, 17:48    [5563087]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
logmnr
Member

Откуда:
Сообщений: 69
Excel 2003 sp2 русский

сразу говорю, пробовал еще и так

OLE2.SET_PROPERTY( myPageSetup, 'CenterFooter', 'Страница &[Страница] из &[Страниц]');

тоже не помогло.
17 апр 08, 17:52    [5563112]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
logmnr
Member

Откуда:
Сообщений: 69
Leonid Kudryavtsev
Excel русский или английский?


какие еще предложения будут? :)
18 апр 08, 10:11    [5564783]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
Тифа
Guest
там вроде также надо писать
OLE2.SET_PROPERTY( myPageSetup, 'CenterFooter', 'Страница &С из &Л');

только не точно помню алиасы для страницы и страниц
18 апр 08, 10:21    [5564857]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
logmnr
Member

Откуда:
Сообщений: 69
Тифа
там вроде также надо писать
OLE2.SET_PROPERTY( myPageSetup, 'CenterFooter', 'Страница &С из &Л');

только не точно помню алиасы для страницы и страниц


Алиасы при записи макроса получаются вот такие см. вниз

logmnr
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Страница &P из &N"


В том то и дело что не срабатывает так
18 апр 08, 10:36    [5564954]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
badmintonist
Member

Откуда:
Сообщений: 330
logmnr
Можете попробовать сделать отчет на основе экселевского шаблона и из формсов вызывать процедуру в экселе (макрос) передавая в нее параметры, а все действия в экселе делать уже этой самой процедурой
18 апр 08, 12:51    [5566014]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
Тифа
Guest
logmnr

Алиасы при записи макроса получаются вот такие см. вниз

logmnr
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Страница &P из &N"


В том то и дело что не срабатывает так


ну дак алиас английский, а ексель русский )

вот нашел в инете

Для указания полного количества страниц можно использовать схему
WorkSheet.PageSetup.RightFooter := ' страница &С из &К ';
где соответственно С и К русские буквы.
18 апр 08, 13:06    [5566129]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
logmnr
Member

Откуда:
Сообщений: 69
Тифа
logmnr

Алиасы при записи макроса получаются вот такие см. вниз

logmnr
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Страница &P из &N"


В том то и дело что не срабатывает так


ну дак алиас английский, а ексель русский )

вот нашел в инете

Для указания полного количества страниц можно использовать схему
WorkSheet.PageSetup.RightFooter := ' страница &С из &К ';
где соответственно С и К русские буквы.


Вах, спасибо дарагой. :) То что надо :)
18 апр 08, 13:14    [5566208]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
Тифа
Guest
Хотя вот меня всегда интересовало как можно узнать через OLE какой ексель русский или английский? что бы сразу в программу закладывать а то не эстетично это или только под русский или только под английский
18 апр 08, 13:42    [5566437]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
logmnr
Member

Откуда:
Сообщений: 69
lver:=ole2.get_obj_property(app,'LanguageSettings');
arglist:=ole2.create_arglist;
ole2.add_arg(arglist,2);

--1-msoLanguageIDInstall
--2-msoLanguageIDUI
--3-msoLanguageIDHelp
--4-msoLanguageIDExeMode
--5-msoLanguageIDUIPrevious

ver:=ole2.get_obj_property(lver,'LanguageID',arglist);
ole2.destroy_arglist(arglist);

в случае русского Excel ver=1049
EnglishUS Excel ver=1033
EnglishUK Excel ver=2057
и т.д.
18 апр 08, 14:53    [5567014]     Ответить | Цитировать Сообщить модератору
 Re: проблемма!!! колонтитул в Excel из Forms?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9278
а я по другому делал (https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=460298):

args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG( args,1 ); -- xlCountryCode
iCountryCode := OLE2.GET_NUM_PROPERTY( myApp, 'International', args );
OLE2.DESTROY_ARGLIST( args);

IF iCountryCode=7 THEN -- Russian version of MS Excel
wksFuncSubtotal := 'ÏÐÎÌÅÆÓÒÎ×ÍÛÅ.ÈÒÎÃÈ'; -- The Russian word for 'SUBTOTAL'
ELSE
wksFuncSubtotal := 'SUBTOTAL';
END IF;
...
18 апр 08, 15:24    [5567309]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить