C# 在.docx文件中添加文本和图片
我使用一个Office Word文件(模板),在这个文件中有重复的默认文本和照片,我必须用另一个图片和文本替换它C# 在.docx文件中添加文本和图片,c#,.net,ms-word,ms-office,office-interop,C#,.net,Ms Word,Ms Office,Office Interop,我使用一个Office Word文件(模板),在这个文件中有重复的默认文本和照片,我必须用另一个图片和文本替换它 如何在模板中定义特定区域,然后在C#中找到这些区域以替换它们?我认为最好的方法是找到如何操作word xml结构以包含所需数据 对于模板填充和修改,可以使用Microsoft提供的XML 您也可以在这里遵循此手动方法,而不使用SDK。 . 您将添加一个自定义XML资源,其中包含模板的更改/资源 如果你不需要那么灵活,你可以在Word中使用标准的内容控件/图片内容控件,然后在C#中替换
如何在模板中定义特定区域,然后在C#中找到这些区域以替换它们?我认为最好的方法是找到如何操作word xml结构以包含所需数据 对于模板填充和修改,可以使用Microsoft提供的XML 您也可以在这里遵循此手动方法,而不使用SDK。 . 您将添加一个自定义XML资源,其中包含模板的更改/资源 如果你不需要那么灵活,你可以在Word中使用标准的内容控件/图片内容控件,然后在C#中替换它们-这取决于你在替换元素时的灵活程度。。
您可以在这里找到一个使用图片内容控制的好的完整示例:好的,最后我尝试了这种方法;将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();
}
}
}
stringoutfile=@“D:\template\u created.docx”;
字符串docPath=@“D:\template.docx”;
字符串xmlPath=@“D:\template.xml”;
文件副本(docPath,outFile);
使用(WordprocessingDocument doc=WordprocessingDocument.Open(outFile,true))
{
MainDocumentPart mdp=doc.MainDocumentPart;
if(mdp.CustomXmlParts!=null)
{
mdp.DeleteParts(mdp.CustomXmlParts);
}
CustomXmlPart cxp=mdp.AddCustomXmlPart(CustomXmlPartType.CustomXml);
FileStream fs=null;
尝试
{
fs=新文件流(xmlPath,FileMode.Open);
cxp.FeedData(fs);
mdp.Document.Save();
}
最后
{
如果(fs!=null)
{
fs.Dispose();
}
}
}
当我运行应用程序时,它创建了自定义XML文件并将其附加到我的Word文件中。当我打开Word文件时,没有出现错误,但所有的内容控制都没有填写。我的最终方法是在Word文档中使用唯一id的内容控制。然后我可以用C#找到这些id并替换内容。嗨,马克,谢谢你的帮助。我只是发现我们可以在Word文件中添加特殊控件,并为每个控件指定一个特定的名称。你认为在C#app中按名称搜索这些文章是否是一个好的idéea?你是指内容控制/图片内容控制吗?取决于您希望在替换元素时的灵活性。。如果这个控件能让你做你想做的事,我会先试试这个解决方案!您可以在这里找到一个使用图片内容控件的完整示例:我将此选项添加到我的答案中以供将来参考是的,内容控件(富文本、图片等)。我认为这是一种在Word文档中指定区域并在找到区域后添加值的好方法。但“灵活”是什么意思?使用内容控件,您只能更改设置的控件并替换该控件中的对象。。使用上述解决方案,您可以操作整个xml结构,这是非常强大的。。。只是想提一下,因为你想要“另一种方法”(根据你的问题)