C# 从其他word文档复制的图片为空
我生成一个SSRS报告,并将其另存为Word文档。该文档包含图片(图表为平面图像)。 我并没有真正保存Word文档,而是在内存中打开了它 然后我使用OpenXML创建另一个word文档,其中我需要复制SSRS报告中的图片 我试图从ssrs报告中获取图纸,并将其插入到新word文档中C# 从其他word文档复制的图片为空,c#,reporting-services,openxml,openxml-sdk,wordprocessingml,C#,Reporting Services,Openxml,Openxml Sdk,Wordprocessingml,我生成一个SSRS报告,并将其另存为Word文档。该文档包含图片(图表为平面图像)。 我并没有真正保存Word文档,而是在内存中打开了它 然后我使用OpenXML创建另一个word文档,其中我需要复制SSRS报告中的图片 我试图从ssrs报告中获取图纸,并将其插入到新word文档中 MainDocumentPart ssrsMainPart = ssrsDoc.MainDocumentPart; var drawings = ssrsMainPart.Document.Descendants&l
MainDocumentPart ssrsMainPart = ssrsDoc.MainDocumentPart;
var drawings = ssrsMainPart.Document.Descendants<Drawing>().ToList();
但在那之后,我再也无法用Word 365打开文档,Word报告文档已损坏
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
Body body = mainPart.Document.Body;
for (int i = 0; i < 10; i++)
{
if (i < drawings.Count())
{
var myDrawing = drawings.Skip(i).First();
myDrawing.Remove();
body.Append(myDrawing);
body.Append(new Paragraph());
}
}
foreach (var e in ssrsDoc.MainDocumentPart.Document.Body.Elements())
{
var clonedElement = e.CloneNode(true);
clonedElement.Descendants<DocumentFormat.OpenXml.Drawing.Blip>().ToList().ForEach(blip =>
{
var newRelation = wordDoc.CopyImage(blip.Embed, ssrsDoc);
blip.Embed = newRelation;
});
clonedElement.Descendants<DocumentFormat.OpenXml.Vml.ImageData>().ToList().ForEach(imageData =>
{
var newRelation = wordDoc.CopyImage(imageData.RelationshipId, ssrsDoc);
imageData.RelationshipId = newRelation;
});
wordDoc.MainDocumentPart.Document.Body.AppendChild(clonedElement);
}
public static string CopyImage(this WordprocessingDocument newDoc, string relId, WordprocessingDocument org)
{
var p = org.MainDocumentPart.GetPartById(relId) as ImagePart;
var newPart = newDoc.MainDocumentPart.AddPart(p);
newPart.FeedData(p.GetStream());
return newDoc.MainDocumentPart.GetIdOfPart(newPart);
}