有没有办法检查书签是否放在表格单元格内?如果是这样,我怎么能得到单元格的索引(行和列)?
考虑使用类似XTextViewCursor
的东西,但我不知道如何获取单元格光标以便比较游标位置。
(非Java解决方案也可以接受,我只想得到这个想法)
答案 0 :(得分:1)
显然书签锚点的工作方式与TextRange界面类似。请参阅Andrew Pitonyak的宏观文档中的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
仅表示第二行和第二列。对于具有跨越多列的行或跨越多行的列的表,可能会更复杂。
答案 1 :(得分:0)
有一个基于@JimK答案的java解决方案:
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
,然后从"CellName"
的属性中检索cell
。