【问题标题】:ASP.NET to PowerPoint: File gets corrupted when adding imageASP.NET 到 PowerPoint:添加图像时文件损坏
【发布时间】:2014-10-13 19:14:52
【问题描述】:

我在将数据导出到 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 可以尝试从文件中恢复数据,但某些演示文稿数据(例如形状、文本和格式)可能会丢失。 执行以下操作之一: 如果要从文件中恢复数据,请单击是。 如果您不想从文件中恢复数据,请单击否。

【问题讨论】:

  • 很好,您找到了解决方案!您可以通过旁边的空心复选标记来接受您自己的答案。

标签: asp.net xml powerpoint


【解决方案1】:

好的,很抱歉这个无用的帖子。我的错。

解决方案:

 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);

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    相关资源
    最近更新 更多