【问题标题】:C# word document clone existing word file as a new documentC# word文档克隆现有word文件作为新文档
【发布时间】: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。

标签: c# ms-word interop


【解决方案1】:

这可以通过将文件路径传递给 Docments.Add 方法来实现:

Word.Application _word = new Word.Application();
_word.Visible = true;
_word.WindowState = Word.WdWindowState.wdWindowStateMaximize;

Word.Document _doc = _word.Documents.Add(pathToExistingDocument);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-23
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多