将文档与OpenXML 2.0合并

时间:2012-04-18 18:56:00

标签: c# .net ms-word openxml

我正在尝试将数据库中的一些信息和一些图片插入到Word文档中。

我创建了一个Word文档作为模板,我希望找到并用实际数据和图片替换关键字。

如何打开此模板,替换关键字,并将其放入新文档中。然后我需要重新打开该模板并再次执行,直到列表中的每个人都在新的Word文档中。

//The template file exists, so open it and use it to set up the main Word document
using (WordprocessingDocument templatePackage = WordprocessingDocument.Open(templateDocPath, false))
{
    //Read the template file
    string docText = null;
    using (StreamReader sr = new StreamReader(templatePackage.MainDocumentPart.GetStream()))
    {
        docText = sr.ReadToEnd();
    }

    string tempString = docText;
    Regex regexText = new Regex("<name>");
    docText = regexText.Replace(docText, tnlCampers[0].FirstName + " " + tnlCampers[0].LastName);

    regexText = new Regex("<address>");
    docText = regexText.Replace(docText, tnlCampers[0].Address1 + " " + tnlCampers[0].Address2 + " " + tnlCampers[0].City + ", " + tnlCampers[0].State + " " + tnlCampers[0].ZipCode);

    regexText = new Regex("<phone>");
    docText = regexText.Replace(docText, tnlCampers[0].CellPhone);

    regexText = new Regex("<email>");
    docText = regexText.Replace(docText, tnlCampers[0].Email);

    //Write to the newly created Word Document
    using (StreamWriter sw = new StreamWriter(package.MainDocumentPart.GetStream(FileMode.Create)))
    {
        sw.Write(docText);
    }
}

但是当我在我的tnlCampers列表上执行foreach循环时,它会抛出一个错误,因为它试图复制完整的文档结构而不仅仅是正文部分。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以尝试Word Doc Generator这是一个使用Visual Studio 2010和Open XML 2.0 SDK从模板生成Word文档的实用程序。

答案 1 :(得分:0)

您也可以尝试我们的GemBox.Document组件。

它具有非常用户友好和有效的邮件合并支持。请参阅C# Word mail merge文章和customize mail merge示例。