【发布时间】:2018-09-11 17:05:39
【问题描述】:
我想创建应用程序来填充由 C# Interop.Word 库自动填充的模板文档。用户从现有文件中选择模板文档。我必须将此文档克隆到新文档(包括填充、边距和所有格式)。
1.我尝试过使用InsertFile函数
document = app.Documents.Add();
object missing = System.Reflection.Missing.Value;
object start = 0;
object end = 0;
Word.Range range = document.Range(ref start, ref end);
range.InsertFile(template_file_name, ref missing, ref _true, ref missing, ref missing);
并在文档中填充模板。但是这个函数改变了模板中的一些格式
2. 我尝试过使用 Copy 和 PasteSpecial
app=new Word.Application();
src_doc=app.Documents.Open(template_file_name);
document=app.Documents.Add();
src_doc.Content.Copy();
document.Content.PasteSpecial(DataType:Word.WdPasteOptions.wdKeepSourceFormatting);
此代码保持格式正确。但是粘贴后改变值是有问题的。 “src_doc”即使在关闭后仍保持打开状态。
长话短说。需要将现有文档克隆为新文档
【问题讨论】:
-
我不是专家,但你不能把它复制成一个文件吗?您可以使用 System.IO 并在磁盘上创建此文件的副本并使用 Interop 打开它,而不是尝试克隆 Word 文档?如果这不适用于您的要求,我们深表歉意。
-
此解决方案有效。但它将文档作为现有文件打开。我需要将其作为新文档打开(以便用户可以将其保存到任何地方)。
-
这里还有一个想法 - 将您的模板创建为
.dotm模板并使用您的模板作为命令行参数打开 word。"C:\Program Files (x86)\Microsoft Office\Office16\Winword.exe" /t"C:\Users\me\Documents\Custom Office Templates\myTemplate.dotm"如果可以将您的模板创建为工作模板格式,这应该可以完成您正在尝试的工作。 -
是否可以打开
.docx而不是.dotm作为模板 -
使用 Documents.Add(templateFilePath) 从 dotm 或 dotx 创建一个新的 docx。