我正在处理 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/