c# - 将一个文档插入另一个 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 中手动插入文件。而且我也无法获得原始文本格式。也许这是一个错误的方法?
解决方案
Copy()
我用/解决方案想通了Paste()
。我需要这样复制:
MyDoc.ActiveWindow.Selection.Copy();
doc.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdFormatOriginalFormatting);
然后它保留样式。但有时,如果文档有表格,它会将它们复制到下一页,这很奇怪。该InsertFile()
方法对我不起作用。
推荐阅读
- ckeditor5 - 如何在CKEditor5中自动创建粘贴图像之间的空间?
- java - Spring Boot 上的基本放置(更新)
- twitter-bootstrap-3 - 隐藏小型设备的列
- java - 尽管对可执行 jar 使用清单文件,但我不断收到“无法找到或加载主类”错误
- javascript - 使用javascript检查asp.net mvc核心和C#中的进程状态
- docusignapi - Docusign - 通过 API 创建时 - 调用 CreateEnvelope 时出错。此帐户缺少足够的权限
- c# - 更改 Windows Toast c# 的持续时间
- java - session#refresh 不使用@ManyToOne 和复合键刷新根实体
- python - 用于 O365 EO 可恢复项目文件夹的 REST Api
- json - 在 JSON 文件中的 REST 有效负载中传递 UID/PWD