c# - 将一个文档插入另一个 Microsoft.Office.Interop.Word

标签 c# ms-word office-interop

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

1) 复制/粘贴

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() 行不起作用,告诉我文本属性未复制。 (如果我只使用 Copy()Paste(),它就可以工作。)即使我手动粘贴,我也能得到我想要的。

第二种方法可行,但它不需要文本格式。因此,我得到了与原始格式和大小不同的其他格式和大小的文本。

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

最佳答案

我用Copy()/Paste()解决方案解决了这个问题。我需要像这样复制:

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

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

关于c# - 将一个文档插入另一个 Microsoft.Office.Interop.Word,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58166396/

相关文章:

c# - ASP.NET Core RESTful,相同的路由但不同的操作

c# - 只有属性具有特定值的 Concat 列表

c# - core 2.0 和 office interop - microsoft.office.core 包在哪里?

c# - PowerPoint 2010 加载项导出到图像问题

c# - 捆绑 - 应用程序路径错误

c# - 如何动态填充 TreeView (C#)

vba - 循环浏览目录中的所有Word文件

Delphi 6 OleContainer SaveAsDocument 在 Windows 7/Word 2010 中创建损坏的文件,在 XP/Word 2003 中正常

python - 有没有办法使用 python-docx 更改Word文档字体?

c# - ppt保存幻灯片时保留源模板