C# .Net - 在不打开 Word 的情况下在书签中插入文本

C# .Net - Insert text in Bookmark without opening Word

我设法使用 Microsoft.Office.Interop.Word 在 Word 文档的书签中插入文本。

        using Microsoft.Office.Interop.Word;
        using Application = Microsoft.Office.Interop.Word.Application;
        using Range = Microsoft.Office.Interop.Word.Range;

        Application app = new Microsoft.Office.Interop.Word.Application();
        Document doc = app.Documents.Open(@"C:\wordDocument.docx");
        string bookmark = "bookmarkName";

        Bookmark bm = doc.Bookmarks[bookmark];
        Range range = bm.Range;
        range.Text = "Hello World";
        doc.Bookmarks.Add(bookmark, range);

        /* OR
            doc.Bookmarks[bookmark].Select();
            app.Selection.TypeText("Hello");
        */

问题是这也打开了Word文档。这可以在不打开文档本身的情况下完成吗?喜欢这一切都发生在后台吗?

更新 Word 文档书签的文本后,尝试使用 SaveClose 功能。

doc.Bookmarks.Add(bookmark, range);之后添加以下代码。

doc.Save();
doc.Close();

编辑: 如果计算机运行缓慢,Word 文档可能会在您打开后一秒钟内显示出来。正如hardcoregamer所说,你可以尝试先隐藏Word.Application的对象再打开它。

    using Microsoft.Office.Interop.Word;
    using Application = Microsoft.Office.Interop.Word.Application;
    using Range = Microsoft.Office.Interop.Word.Range;

    Application app = new Microsoft.Office.Interop.Word.Application();
    app.Visible = false; //Hide the Word.Application object.
    Document doc = app.Documents.Open(@"C:\wordDocument.docx");
    string bookmark = "bookmarkName";

    Bookmark bm = doc.Bookmarks[bookmark];
    Range range = bm.Range;
    range.Text = "Hello World";
    doc.Bookmarks.Add(bookmark, range);
    doc.Save(); //save the document.
    doc.Close(); //close the document.
    app.Quit(); //close the Word.Application object. otherwise, you'll get a ReadOnly error later.