Короткий ответ:
Листы можно получить по имени, индексу или перечислению через интерфейс com.sun.star.sheet.XSpreadsheetDocument.
oSheets = oDoc.getSheets().getByIndex(0)
Пояснение:
Тогда что такое oDoc.Sheets
?
Чтобы действительно понять UNO API, лучше всего использовать Java. Вот некоторый код, который вам не нужно читать, но я покажу его здесь, потому что результаты будут полезны.
XSpreadsheetDocument xSpreadSheetDocument = UnoRuntime.queryInterface(
XSpreadsheetDocument.class, xComponent);
XSpreadsheets xSpreadsheets = xSpreadSheetDocument.getSheets();
XPropertySet propSet = (XPropertySet)UnoRuntime.queryInterface(
XPropertySet.class, xComponent);
Используя такой код, мы можем убедиться, что getSheets()
работает в Java, а Sheets()
— нет. В наборе свойств также нет свойства с именем Sheets
. Короче говоря, в Java нет Sheets
, поэтому Sheets
не должно быть частью UNO API.
Теперь языки, менее строгие, чем Java, такие как Basic и Python, имеют различные сокращения для работы с UNO. Во-первых, им не нужно queryInterface
для получения определенного объекта, потому что их не волнует тип.
Другой ярлык заключается в том, что они предоставляют свойства, которые можно использовать в качестве альтернативы методу определенного интерфейса. Итак, метод XSpreadsheetDocument.getSheets()
получает свойство ярлыка Sheets
. Точно так же метод XDocumentSupplier.getDocumentProperties()
получает свойство ярлыка DocumentProperties
. Оба эти свойства являются членами oDoc
при написании на Basic или Python.
Поиск информации:
Поиск в документации по API непрост. Прежде чем пытаться это сделать, лучше поискать пример кода. Макродокумент Эндрю Питоньяка содержит набор примеров, которые охватывают многие потребности, а поиск в Google поможет привести пример кода с таких сайтов, как ask.libreoffice.org.
Кроме того, необходим инструмент самоанализа, такой как XrayTool
или MRI
. Такие инструменты выдают список всех свойств и методов, доступных для объекта, а поскольку список плоский, меньше необходимости копаться в интерфейсе унаследованного интерфейса другого интерфейса и так далее.
person
Jim K
schedule
13.06.2020