Работа с листами
Материал из Forumooo wiki
Версия от 17:13, 8 марта 2017; Rami (Обсуждение | вклад)
Содержание |
Для импорта листа (со связями или без) нам понадобятся следующие методы:
Метод | Описание |
---|---|
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