From ad1506790b79a1874fff0b186093930f39f9cad0 Mon Sep 17 00:00:00 2001 From: zzs Date: Tue, 25 Mar 2025 10:33:49 +0800 Subject: [PATCH] fix: cant find bookmark --- BookmarkOP.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/BookmarkOP.py b/BookmarkOP.py index ef8edb1..8adeac4 100644 --- a/BookmarkOP.py +++ b/BookmarkOP.py @@ -186,13 +186,19 @@ def InsertRow(location_bookmark_name, data, start_row_index=-1): data: 二维数组,用于填充表格数据 start_row_index: 起始行位置,默认为-1,即在表格末尾插入 """ - bookmark_info = QueryAll() - table_bookmarks = bookmark_info["table"] + # bookmark_info = QueryAll() + # table_bookmarks = bookmark_info["table"] - handle_table_index = FindTableIndex(table_bookmarks, location_bookmark_name) + # handle_table_index = FindTableIndex(table_bookmarks, location_bookmark_name) doc = XSCRIPTCONTEXT.getDocument() tables = doc.getTextTables() + bookmarks = doc.getBookmarks() + bookmark_in_table_position = QueryBookmarkPositionInTable(tables, bookmarks) + if location_bookmark_name not in bookmark_in_table_position: + raise ValueError(f"未找到书签 {location_bookmark_name} 对应的表格") + + handle_table_index = bookmark_in_table_position[location_bookmark_name]["tableIndex"] try: handle_table = tables.getByIndex(handle_table_index) @@ -258,7 +264,7 @@ def DebugCallInsertRow(): """ 调试调用 """ - InsertRow("h1", [["1", "2", "3"], ["4", "5", "6"]], 0) + InsertRow("t1", [["1", "2"], ["4", "5"]], 0) def DeleteRowWithJSON(json_str): @@ -277,12 +283,20 @@ def DeleteRow(location_bookmark_name, start_row_index, delete_row_count=-1): start_row_index: 起始行位置(删除行包含本行) delete_row_count: 删除的行数 """ - bookmark_info = QueryAll() - table_bookmarks = bookmark_info["table"] - handle_table_index = FindTableIndex(table_bookmarks, location_bookmark_name) + # bookmark_info = QueryAll() + # table_bookmarks = bookmark_info["table"] + # handle_table_index = FindTableIndex(table_bookmarks, location_bookmark_name) doc = XSCRIPTCONTEXT.getDocument() tables = doc.getTextTables() + bookmarks = doc.getBookmarks() + bookmark_in_table_position = QueryBookmarkPositionInTable(tables, bookmarks) + if location_bookmark_name not in bookmark_in_table_position: + raise ValueError(f"未找到书签 {location_bookmark_name} 对应的表格") + + handle_table_index = bookmark_in_table_position[location_bookmark_name]["tableIndex"] + + handle_table = tables.getByIndex(handle_table_index) row_count = handle_table.getRows().getCount() if start_row_index < 0 or start_row_index >= row_count: