如何检查书签何时放置在单元格内?
How to check when a bookmark placed inside a cell?
有什么方法可以检查 table 单元格中是否放置了书签?如果是这样,我怎样才能获得单元格的索引(行和列)?
想过使用 XTextViewCursor
之类的东西,但我不知道如何获取单元格光标以便比较光标位置。
(非java解决方案也接受table,我只是想了解一下)
显然书签锚点的工作方式类似于 TextRange 界面。请参阅 Andrew Pitonyak 的宏文档中的 7.1.2 Can I check the current selection for a TextTable or Cell
。
以下 python 示例检查锚点是否位于 table 单元格中。如果是,它获取单元格名称,我们可以从中确定行和列。
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
。对于简单的 tables,B2
只是表示第二行和第二列。对于 table 行跨越多列或列跨越多行的 table 可能更复杂。
有一个 java 解决方案,基于 @JimK 的回答:
XTextRange bookmark = getBookmarkByName(bookmarkName);
XPropertySet props = UnoRuntime.queryInterface(XPropertySet.class, bookmark);
Object maybeCell = props.getValue("Cell");
XCell cell = UnoRuntime.queryInterface(XCell.class, maybeCell);
您还可以从 props
中提取 "TextTable"
,然后从 cell
的属性中检索 "CellName"
。
有什么方法可以检查 table 单元格中是否放置了书签?如果是这样,我怎样才能获得单元格的索引(行和列)?
想过使用 XTextViewCursor
之类的东西,但我不知道如何获取单元格光标以便比较光标位置。
(非java解决方案也接受table,我只是想了解一下)
显然书签锚点的工作方式类似于 TextRange 界面。请参阅 Andrew Pitonyak 的宏文档中的 7.1.2 Can I check the current selection for a TextTable or Cell
。
以下 python 示例检查锚点是否位于 table 单元格中。如果是,它获取单元格名称,我们可以从中确定行和列。
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
。对于简单的 tables,B2
只是表示第二行和第二列。对于 table 行跨越多列或列跨越多行的 table 可能更复杂。
有一个 java 解决方案,基于 @JimK 的回答:
XTextRange bookmark = getBookmarkByName(bookmarkName);
XPropertySet props = UnoRuntime.queryInterface(XPropertySet.class, bookmark);
Object maybeCell = props.getValue("Cell");
XCell cell = UnoRuntime.queryInterface(XCell.class, maybeCell);
您还可以从 props
中提取 "TextTable"
,然后从 cell
的属性中检索 "CellName"
。