将一个文档插入另一个 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()不起作用,告诉我未复制文本属性。(如果我只使用Copy()并且Paste()它有效。)即使我手动粘贴,我也会得到我想要的。

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

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

弗拉迪·帕特里克

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Microsoft.Office.Interop.Word OMath

C# Microsoft.Office.Interop.Word 替换为 Selection.Find.Execute() 超过第一个单词

无法使用microsoft.office.interop.word在当前一字之后插入图像

是否可以使用Microsoft.Office.Interop.Word以编程方式从Word文档中删除行号?

Microsoft.Office.Interop.Word中仅可访问的第一页

可以将DebuggerDisplay属性应用于Microsoft.Office.Interop.Word.Range吗?

在VBScript中使用Microsoft.Office.Interop.Word枚举常量

C# Microsoft.Office.Interop.Word 保护段落

使用Microsoft.Office.Interop Word和Excel

使用f#Microsoft.Office.Interop.Word搜索和替换

使用参考C#添加Microsoft.Office.InterOp.Word

Microsoft.Interop.Office.Word完整样式不适用

使用Microsoft.Office.Interop.Word启用内置的Microsoft Word按钮控件

使用Microsoft.Office.Interop.Word在每行中加粗一部分字符串/范围

Microsoft Office文档“被锁定,无法由“另一个用户”进行编辑”

如何使用 Microsoft Word Interop Bookmarks C# 选中一个框

当内存消耗达到63000K左右时,Microsoft Office Interop Word应用程序将停止运行

在Microsoft WORD文档中从一个地方链接到另一个地方

机器中的单独Microsoft.Office.Interop.Word实例和Word应用程序

Microsoft.Office.Interop.Word - Word 在尝试打开文件时遇到错误

如何通过 Microsoft.Office.Interop.Word 在 wdRevisionsViewFinal 中将 word 转换为 html?

R和Microsoft Word:根据另一个Word文档中的文本更新一个Word文档中的文本

Office 2007的Microsoft.Office.Interop.Excel

确定是否选中了word文档中的复选框 - c#中的char u0015、microsoft.office.interop.word

无法将类型为“ microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为“ microsoft.Office.Interop.Excel.Application”

我如何创建接口Microsoft.Office.Interop.Word.Application的新实例

如何使用 Microsoft.Office.Interop.Word 在 C# 中编辑 docx 文件

Microsoft.Office.Interop.Word.WdRelativeHorizontalPosition出现C#编译器错误;

在哪里可以找到Microsoft.Office.Interop.Word.dll(2010)?