我在 word 模板中有多个表格,需要以其他方式更改每个表格。也有可能会删除或插入其中一个,所以我不能说我拿了第 5 个,而且总是一样的。
必须保存标识,因此我不能使用 .ID 值。
有什么方法可以用 VSTO 识别特定表?最好也可以在没有VSTO的文档中设置。
我找到了一种方法:
用 word 标记表格并为其添加书签。您必须选择一个唯一的名称,以便您还可以识别该表。可以通过如下方法进行识别:
public Word.Bookmark GetBookmark(String bookmarkName)
{
// Find bookmark
Word.Bookmark bookmark = null;
foreach (Word.Bookmark curBookmark in Globals.ThisDocument.Bookmarks)
{
if (curBookmark.Name.Equals(bookmarkName))
{
bookmark = curBookmark;
break;
}
}
return bookmark;
}
我遇到了类似的问题。为了解决这个问题,我在word tamplate中设置了表格的标题(右键单击表格->表格属性...->替代文本->标题)并在word文档中搜索所有表格的标题。下面是我用来搜索表格的代码。
public static Table getTable(Document doc, String title){
int totalTables = doc.Tables.Count;
Microsoft.Office.Interop.Word.Table ret = null;
for (int i = 1; i <= totalTables; i++){
if (title.Equals(doc.Tables[i].Title, StringComparison.OrdinalIgnoreCase)){
ret = doc.Tables[i];
break;
}
}
return ret;
}
是否可以使用表格的替代文本作为标识符?
使用下面的代码来检索它们(从这里复制的代码)
Word.Application wdApp = Application;
Word.Document wdDoc = wdApp.ActiveDocument;
Word.Table wdTable = wdDoc.Tables[1];
MessageBox.Show(wdTable.Title + "\n" + wdTable.Descr);