Работа с таблицами в AText

XTextTable


Интерфейс XTextTable  предоставляет доступ к таблицам в документе AText и позволяет выполнять различные операции с ячейками, строками и столбцами.

Пример использования XTextTable:

// Получаем ссылку на XTextDocument из XComponent
Reference<XTextDocument> xDoc(xComponent, UNO_QUERY);
// Получаем ссылку на XMultiServiceFactory из XTextDocument
Reference<XMultiServiceFactory> xDocMSF(xDoc, UNO_QUERY_THROW);
// Создаем объект таблицы через XMultiServiceFactory
Reference<XTextTable> xTable(xDocMSF->createInstance("com.sun.star.text.TextTable"), UNO_QUERY_THROW);
// Инициализируем таблицу размером 2x2
xTable->initialize(2, 2);
// Получаем ссылку на XText из XTextDocument
Reference<XText> xText(xDoc->getText(), UNO_QUERY_THROW);
// Создаем курсор для вставки таблицы
Reference<XTextCursor> xTextCursor(xText->createTextCursor(), UNO_QUERY_THROW);
// Получаем ссылку на XTextRange из XTextCursor
Reference<XTextRange> xTextRange(xTextCursor, UNO_QUERY);
// Перемещаем курсор в начало документа
xTextRange->getStart();
// Получаем ссылку на XTextContent из таблицы
Reference<XTextContent> xTC(xTable, UNO_QUERY);
// Вставляем таблицу в документ
xText->insertTextContent(xTextRange, xTC, false);

Методы интерфейса XTextTable:


  • createCursorByCellName(aCellName) - Создает курсор таблицы текста и возвращает интерфейс XTextTableCursor. Изначально курсор находится в ячейке с указанным именем.
Параметры:
  • string aCellName - имя ячейки.
Возвращаемое значение: com::sun::star::text::XTextTableCursor

  • getCellByName(aCellName) -  Возвращает  интерфейс com::sun::star::table::XCell ячейки с указанным именем.
Параметры:
  • string  aCellName - имя ячейки.
Возвращаемое значение: com::sun::star::table::XCell

  • getCellNames() - возвращает  имена всех ячеек текстовой таблицы.
Параметры:
-
Возвращаемое значение: sequence<string>

  • getColumns() -   Возвращает объект доступа к колонкам текстовой таблицы.
Параметры:
-
Возвращаемое значение: com::sun::star::table::XTableColumns

  • getRows() -  Возвращает объект доступа к строкам таблицы текста.
Параметры:
-
Возвращаемое значение: com::sun::star::table::XTableRows

  • initialize(nRows, nColumns) - Определяет количество строк и столбцов таблицы. Этот метод должен быть вызван после создания объекта и до его вставки или присоединения.

Параметры:

  • long nRows - количество строк.
  • long nColumns - количество столбцов.
Возвращаемое значение: void

XTextTablesSupplier


Интерфейс XTextTablesSupplier определяет возможность доступа к таблицам внутри текстового документа.

Пример использования XTextTablesSupplier:

Reference<XTextDocument> xDoc(xComponent, UNO_QUERY);

Reference<XText> xText(xDoc->getText(), UNO_QUERY_THROW);

// Получаем все таблицы в документе

// Создаем объект  интерфейса XTextTablesSupplier  из xDoc интерфейса XTextDocument

Reference<XTextTablesSupplier> xTablesSupplier(xDoc, UNO_QUERY_THROW);

Reference<XIndexAccess> xIA(xTablesSupplier->getTextTables(), UNO_QUERY);

//Получаем объект таблицы с индексом 0

Reference<XTextTable>xTable(xIA->getByIndex(0), UNO_QUERY);

//Интерфейс XCellRange более детально описан в этой статье: https://support.almi-partner.ru/#knowledge_base/1/locale/ru/answer/109

Reference<XCellRange>xCellRange(xTable, UNO_QUERY);

//Получаем объект ячейки с позицией 0, 3

//Интерфейс XCell более детально описан в этой статье: https://support.almi-partner.ru/#knowledge_base/1/locale/ru/answer/110

Reference<XCell>xCell(xCellRange->getCellByPosition(0, 3), UNO_QUERY);

Reference<XText> xTextCell(xCell, UNO_QUERY);

//Создаем объект текстового курсора в ячейке

Reference<XTextCursor> xCursor(xTextCell->createTextCursor(), UNO_QUERY);

//Вставляем текст

xCursor->setString("Hello, World");


Методы интерфейса XTextTablesSupplier:


  • getTextTables() -  Возвращает коллекцию "TextTables" (текстовых таблиц), которые находятся в данном объекте.
Параметры:
-
Возвращаемое значение: com::sun::star::container::XNameAccess



В нижеуказанном примере демонстрируется создание и редактирование таблицы с помощью интерфейсов XTextTable, XTextCursor, XTextRange и других.

Прикреплённые файлы
create_and_editing_table.cpp
404kb
create_and_editing_table.cs
404kb
for_linux.tar
404kb