[oodisc] По поводу программной вставки колонтитулов
Yuriy Osmerkin
yura на fklan.com.ua
Чт Мар 6 01:20:55 MSK 2003
Добрый день!
Некоторое время назад я спрашивал в этой рассылке о том, как вставить
программно (Delphi) текст в колонтитул. И обнаружил, что я чуть-ли не
пионер в использовании OpenOffice из других программ ;-) .
Позже видел письма с аналогичными вопросами, но практически не видел
ответов.
На сегодня я таки раскопал решение той задачи и готов поделиться со
страждущими :-). Код написан на Basic от Windows Scripting Host, но
принцип там общий для всех платформ. Я вот, к примеру, перенесу код под
Delphi, и, возможно, слезу с OLE на UNO.
Если некоторые строчки окажутся разбитыми на две - это не я, а почтовая
программа :)
--- mysheet.vbs ---
' Соединиться и получить интерфейс документа
Set objServiceManager = WScript.CreateObject("com.sun.star.ServiceManager")
Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
Dim args()
Set objDocument = objDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, args)
' Получить список семейств стилей документа
Set oStyleFamilies = objDocument.getStyleFamilies()
' Получить семейство страничных стилей документа
Set oPageFamilies = oStyleFamilies.getByName("PageStyles")
' Получить название стиля страницы текущего листа
Set oSheets = objDocument.getSheets()
Set oSheet = oSheets.getByIndex(0)
sPageStyle = oSheet.PageStyle
' Получить объект-страничный стиль по имени
Set oPageStyle = oPageFamilies.getByName(sPageStyle)
' Включить верхний колонтитул
oPageStyle.HeaderOn = True
' Колонтитул общий для правых и левых страниц
oPageStyle.HeaderIsShared = True
' Получить текстовый объект нужного колонтитула
Set oHeaderLeft = oPageStyle.RightPageHeaderContent
Set oHeaderText = oHeaderLeft.getCenterText
' Вставляем текст
oHeaderText.string = "Test test test"
' Вставляем измененный стиль обратно
' Вот из-за отсутствия этой строчки я долго бился :)
oPageStyle.RightPageHeaderContent = oHeaderLeft
--------------
Счастливо!
--
Yuriy Osmerkin
System Administrator
Odessa, Ukraine
Подробная информация о списке рассылки Oo-discuss