首页 > 解决方案 > 将一个文档插入另一个 Microsoft.Office.Interop.Word

问题描述

我正在处理 Word VSTO 加载项。我编写了一个将一个文档插入另一个文档的代码。我有两种不同的方法。

1) Copy/Paste

var app = new Word.Application();
            var MyDoc = app.Documents.Add(@"C:\install\CSharp\Plank.dotm");
            MyDoc.ActiveWindow.Selection.WholeStory();
            MyDoc.ActiveWindow.Selection.CopyFormat();
            Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
            doc.Activate();
            doc.ActiveWindow.Selection.PasteFormat();

2)InsertFile()

var app = new Word.Application();

            var MyDoc = app.Documents.Add(@"C:\install\CSharp\Plank.dotm");
            Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
            doc.Activate();
                       //Taking margins
            float TopMargin = MyDoc.PageSetup.TopMargin;
            float RightMargin = MyDoc.PageSetup.RightMargin;
            float LeftMargin = MyDoc.PageSetup.LeftMargin;
            Globals.ThisAddIn.Application.Selection.InsertFile(@"C:\\install\CSharp\Plank.dotm", Link: false, Attachment: false);

在第一种方法中,该行PasteFormat()不起作用,告诉我没有复制文本属性。(如果我使用justCopy()并且Paste()它有效。)即使我手动粘贴我也能得到我想要的。

第二种方法有效,但它不采用文本格式。所以我得到了与原始文本不同的其他格式和大小的文本。

问题是:如何保留原始字体格式?我试图在 Word 中手动插入文件。而且我也无法获得原始文本格式。也许这是一个错误的方法?

标签: c#ms-wordoffice-interop

解决方案


Copy()我用/解决方案想通了Paste()。我需要这样复制:

MyDoc.ActiveWindow.Selection.Copy();
doc.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdFormatOriginalFormatting);

然后它保留样式。但有时,如果文档有表格,它会将它们复制到下一页,这很奇怪。该InsertFile()方法对我不起作用。


推荐阅读