将数据导出到PowerPoint时,我使用了this示例:
我修改了GenerateSlidesFromDB()方法:
public void GenerateSlidesFromDB()
{
string slideName = @"C:\Users\x\Desktop\output.pptx";
File.Copy(@"C:\Users\x\Desktop\Test.pptx", slideName, true);
using (PresentationDocument presentationDocument = PresentationDocument.Open(slideName, true))
{
PresentationPart presentationPart = presentationDocument.PresentationPart;
SlidePart slideTemplate = (SlidePart)presentationPart.GetPartById("rId2");
string firstName = "Test User";
SlidePart newSlide = CloneSlidePart(presentationPart, slideTemplate);
InsertContent(newSlide, firstName);
newSlide.Slide.Save();
DeleteTemplateSlide(presentationPart, slideTemplate);
presentationPart.Presentation.Save();
}
}
正如您所看到的,我用“测试用户”覆盖了占位符,它就像一个魅力。 我需要在这个pptx文件中添加一个图像(作为占位符)。
当我这样做(并再次运行代码)时,我得到一个损坏的pptx文件? 错误讯息:
PowerPoint删除了不可读的内容 在output.pptx中。你应该复习 此演示文稿确定是否 任何内容都意外地改变了 或者删除。
编辑:如果我尝试原始代码(因为我没有Adventureworks而略有修改),我会收到一些其他类型的错误消息:
此文件可能已损坏或损坏,原因如下: 第三方XML编辑器有时会创建与Microsoft Office XML规范不兼容的文件。 该文件故意损坏,意图损害您的计算机或您的数据。 从未知来源打开文件时要小心。 PowerPoint可以尝试从文件中恢复数据,但某些表示数据(如形状,文本和格式)可能会丢失。 执行以下操作之一: 如果要从文件中恢复数据,请单击“是”。 如果您不想从文件中恢复数据,请单击“否”。
答案 0 :(得分:0)
好的,抱歉这个无用的帖子。我的坏。
解决方案:
string imgId = "rIdImg" + i;
ImagePart imagePart = newSlide.AddImagePart(ImagePartType.Jpeg, imgId);
MemoryStream stream3 = new MemoryStream();
using (FileStream file = File.Open(@"C:\Users\x\Desktop\Test.jpg", FileMode.Open))
{
byte[] buffer = new byte[file.Length];
file.Read(buffer, 0, (int)file.Length);
stream3.Write(buffer, 0, buffer.Length);
imagePart.FeedData(new MemoryStream(buffer));
}
SwapPhoto(newSlide, imgId);