使用C#操作dotx模板

时间:2011-11-29 11:25:22

标签: c# openxml-sdk word-template

我有一个问题,

我有一个由客户提供的.dotx文件。它包含在Word中的developermode中添加的许多不同类型的字段。

我希望能够使用此dotx并用值填充它。

如何在C#代码中执行此操作?

1 个答案:

答案 0 :(得分:3)

Microsoft OpemXML SDK允许您使用c#操作docx / dotx文件。您可以从here下载Microsoft OpenXML SDK。

您应首先创建dotx文件的副本。然后在模板中找到字段/内容palceholders。

这是一个小例子(使用带有富文本框内容字段的简单单词模板):

// First, create a copy of your template.
File.Copy(@"c:\temp\mytemplate.dotx", @"c:\temp\test.docx", true);

using (WordprocessingDocument newdoc = WordprocessingDocument.Open(@"c:\temp\test.docx", true))
{
  // Change document type (dotx->docx)
  newdoc.ChangeDocumentType(WordprocessingDocumentType.Document);

  // Find all structured document tags
  IEnumerable<SdtContentRun> placeHolders = newdoc.MainDocumentPart.RootElement.Descendants<SdtContentRun>();

  foreach (var cp in placeHolders)
  {
    var r = cp.Descendants<Run>().FirstOrDefault();

    r.RemoveAllChildren(); // Remove children
    r.AppendChild<Text>(new Text("my text")); // add new content
  }        
}

上面的例子是一个非常简单的例子。你必须使它适应你的单词模板结构。

希望,这有帮助。