我使用Office Word文件(模板),在此文件中有重复的默认文字和照片,我必须用另一张照片和文字替换它
如何在模板中定义特定区域,然后在C#中找到这些区域以替换它们?
答案 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并替换内容。