在.docx文件中添加文本和图片

时间:2015-08-13 09:40:21

标签: c# .net ms-word ms-office office-interop

我使用Office Word文件(模板),在此文件中有重复的默认文字和照片,我必须用另一张照片和文字替换它

如何在模板中定义特定区域,然后在C#中找到这些区域以替换它们?

3 个答案:

答案 0 :(得分:0)

我认为最好的方法是找出如何操纵单词xml结构来包含你想要的数据。

对于模板填写和更改,您可以使用Microsoft的<{3}}

您也可以在此处使用此手动方法,而无需使用SDK。 SDK。您将添加一个自定义XML Ressource,其中包含模板的更改/资源。

如果您不需要那么灵活,可以使用Word中的标准内容控件/图片内容控件,然后在C#中替换它们 - 这取决于您想要更换元素的灵活性。 您可以在此处找到使用图片内容控件的完整示例:Manual approach

答案 1 :(得分:0)

好的,最后我试试这个approch;使用带有Content Control的Word文件并使用XML文件将数据绑定到它们

为此,我使用以下代码:

string outFile = @"D:\template_created.docx";
string docPath = @"D:\template.docx";
string xmlPath = @"D:\template.xml";

File.Copy(docPath, outFile);

using (WordprocessingDocument doc = WordprocessingDocument.Open(outFile, true))
{
    MainDocumentPart mdp = doc.MainDocumentPart;
    if (mdp.CustomXmlParts != null)
    {
        mdp.DeleteParts<CustomXmlPart>(mdp.CustomXmlParts);
    }
    CustomXmlPart cxp = mdp.AddCustomXmlPart(CustomXmlPartType.CustomXml);

    FileStream fs = null;
    try
    {
        fs = new FileStream(xmlPath, FileMode.Open);

        cxp.FeedData(fs);
        mdp.Document.Save();
    }
    finally
    {
        if (fs != null)
        {
            fs.Dispose();
        }
    }
}

当我运行应用程序时,它创建了自定义XML文件并将其附加到我的Word文件中。当我打开Word文件时,没有错误,但所有内容控件都没有填写

答案 2 :(得分:0)

我的最后一种方法是在我的Word文档中使用具有唯一ID的Content Control。然后我可以用C#找到那些id并替换内容。