2016-10-21 2 views
0

Есть ли способ проверить, помещена ли закладка внутри ячейки таблицы? Если да, то как я могу получить индексы ячейки (строка и столбец)?Как проверить, когда закладка помещена внутри ячейки?

Мысль об использовании чего-то вроде XTextViewCursor, но я не знаю, как получить курсор ячейки, чтобы сравнивать позиции курсоров.

(Non-Java решение также приемлемо, я просто хочу, чтобы получить представление)

ответ

1

Видимо закладки якоря работает как интерфейс TextRange. См. 7.1.2 Can I check the current selection for a TextTable or Cell в макро-документе Андрея Питоньяка.

Следующий пример python проверяет, находится ли якорь в ячейке таблицы. Если это так, он получает имя ячейки, из которой мы можем определить строку и столбец.

def is_bookmark_in_cell(): 
    doc = XSCRIPTCONTEXT.getDocument() 
    marks = doc.getBookmarks() 
    anchor = marks.getByName("MyMarkInCell").getAnchor() 
    cell = anchor.Cell 
    if cell: 
     cellName = cell.CellName 
    else: 
     # Bookmark is not in a cell. 

В моем тесте, имя ячейки было B2. Для простых таблиц B2 просто означает вторую строку и вторую колонку. Это может быть более сложным с таблицами, в которых есть строки, охватывающие несколько столбцов, или столбцы, охватывающие несколько строк.

+0

Большое вам спасибо! – soon

0

Существует ява решение, основанное на ответе @ JimK в:

XTextRange bookmark = getBookmarkByName(bookmarkName); 
XPropertySet props = UnoRuntime.queryInterface(XPropertySet.class, bookmark); 
Object maybeCell = props.getValue("Cell"); 
XCell cell = UnoRuntime.queryInterface(XCell.class, maybeCell); 

Вы также могли бы извлечь "TextTable" из props, а затем извлечь из свойств cell «s.

Смежные вопросы