我正在处理 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] 删除。
我来说两句