1

我在 word 模板中有多个表格,需要以其他方式更改每个表格。也有可能会删除或插入其中一个,所以我不能说我拿了第 5 个,而且总是一样的。
必须保存标识,因此我不能使用 .ID 值。

有什么方法可以用 VSTO 识别特定表?最好也可以在没有VSTO的文档中设置。

4

3 回答 3

1

我找到了一种方法:

用 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;
}
于 2012-08-10T12:55:09.477 回答
1

我遇到了类似的问题。为了解决这个问题,我在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;
}
于 2013-05-30T16:00:39.113 回答
0

是否可以使用表格的替代文本作为标识符?

使用下面的代码来检索它们(从这里复制的代码)

 Word.Application wdApp = Application;
 Word.Document wdDoc = wdApp.ActiveDocument;
 Word.Table wdTable = wdDoc.Tables[1];
 MessageBox.Show(wdTable.Title + "\n" + wdTable.Descr);
于 2012-06-26T14:49:05.250 回答