Работа с листами

Материал из Forumooo wiki

Перейти к: навигация, поиск


Содержание

Для импорта листа (со связями или без) нам понадобятся следующие методы:

МетодОписание
getLinkMode()Получить режим связи листа.
setLinkMode(SheetLinkMode)Задать режим связи.
getLinkUrl()Получить URL связи.
setLinkUrl(url)Задать URL связи.
getLinkSheetName()Получить имя связанного листа.
setLinkSheetName(name)Задать имя связанного листа.
link(url, sheetName, filterName, filterOptions, SheetLinkMode)Связать лист с другим листом в другом документе.

Значения, поддерживаемые перечнем com.sun.star.sheet.SheetLinkMode:

ЗначениеОписание
com.sun.star.sheet.SheetLinkMode.NONEЛист не связан.
com.sun.star.sheet.SheetLinkMode.NORMALКопируется все содержимое, включая значения и формулы.
com.sun.star.sheet.SheetLinkMode.VALUEКопируются содержащиеся значения; копируются возвращаемые значения каждой формулы, а не формула непосредственно.

Макросы для демонстрации работы со связанными листами:

Макрос с использованием метода link():

Sub LinkSheet
Dim sURL As String		'URL документа для импорта
Dim sSheet As String		'Имя листа для импорта
Dim oSheets			'Объект sheets, который содержит все листы
Dim oSheet			'Отдельный лист
 
sURL="file:///Путь/к/вашему/файлу.ods"
sSheet="ИмяЛиста"				'если имя листа пустое, по умолчанию связывается первый лист
oSheets=ThisComponent.Sheets
oSheet=oSheets.getByIndex(0)			'получение листа по индексу
'oSheet=oSheets.getByName("Лист1")		'получение листа по имени
oSheet.link(sURL, sSheet, "", "", com.sun.star.sheet.SheetLinkMode.NORMAL)	'Копируется все содержимое листа.
'oSheet.link(sURL, sSheet, "", "", com.sun.star.sheet.SheetLinkMode.VALUE)	'Копируются только значения.
'oSheet.LinkMode=com.sun.star.sheet.SheetLinkMode.NONE			'разрывает связь с исходным документом, сохраняя данные
End Sub


Макрос с использованием методов setLinkUrl(url), setLinkSheetName(name), setLinkMode(SheetLinkMode):

Sub LinkSheet1
Dim sURL As String		'URL документа для импорта
Dim sSheet As String		'Имя листа для импорта
Dim oSheets			'Объект sheets, который содержит все листы
Dim oSheet			'Отдельный лист
 
sURL="file:///Путь/к/вашему/файлу.ods"
sSheet="ИмяЛиста"				'если имя листа пустое, по умолчанию связывается первый лист
oSheets=ThisComponent.Sheets
oSheet=oSheets.getByIndex(0)			'получение листа по индексу
'oSheet=oSheets.getByName("Лист1")		'получение листа по имени
oSheet.setLinkUrl(sURL)
oSheet.setLinkSheetName(sSheet)
oSheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.NORMAL)	'Копируется все содержимое листа.
'oSheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.VALUE)	'Копируются только значения.
'oSheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)	'разрывает связь с исходным документом, сохраняя данные.
End Sub

Макрос для обновления связи:

Sub RefreshLink
Dim sURL As String		'URL объекта связи
Dim oLink				'Объект связи
 
sURL="file:///Путь/к/вашему/файлу.ods"
'Проверяем если связь существует, обновляем
If ThisComponent.SheetLinks.hasByName(ConvertToURL(sURL)) Then 
oLink=ThisComponent.SheetLinks.getByName(ConvertToURL(sURL))		'получение объекта связи по адресу
'oLink=ThisComponent.SheetLinks.getByIndex(0)				'получение объекта связи по индексу
oLink.refresh()
End If
End Sub
Личные инструменты
Пространства имён
Варианты
Действия
Компоненты
Общие вопросы
Совместимость
Навигация
Инструменты