VSTO如何识别word文档中的部分(如表格)?

时间:2012-06-26 11:55:36

标签: ms-word vsto

我在单词模板中有多个表,需要以其他方式更改每个表。也有可能删除或插入一个或另一个,所以我不能说我拿第5个并且总是相同的。
必须保存标识,以便我不能使用.ID值。

用VSTO识别特定表的方法是什么?优选的也可以在没有VSTO的情况下在文档中设置。

3 个答案:

答案 0 :(得分:1)

我找到了办法:

在单词中标记表格并为其添加书签。您必须选择一个唯一的名称,以便您也可以识别该表。可以使用以下方法进行识别:

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;
}

答案 1 :(得分:1)

我遇到了类似的问题。为了解决这个问题,我在word tamplate中设置了表格的标题(右键单击表格 - >表格属性...-> Alt text->标题),并在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;
}

答案 2 :(得分:0)

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

使用以下代码检索它们(从here复制的代码)

 Word.Application wdApp = Application;
 Word.Document wdDoc = wdApp.ActiveDocument;
 Word.Table wdTable = wdDoc.Tables[1];
 MessageBox.Show(wdTable.Title + "\n" + wdTable.Descr);