【问题标题】:Create PowerPoint 2007 presentation from a template从模板创建 PowerPoint 2007 演示文稿
【发布时间】:2009-04-01 14:02:14
【问题描述】:

我需要从带有Open XML Format SDK 2.0 的模板创建一个 PowerPoint 2007 演示文稿。模板必须由客户提供并用于单独的布局样式(字体、背景颜色或图像……)。它需要包含两张预定义的幻灯片:

  • 文字幻灯片
  • 图片幻灯片

应用程序现在应该创建模板文件的副本,创建文本和图像幻灯片的多个副本,并用一些内容替换内容占位符。

我已经找到了一些code snippets from Microsoft 来编辑幻灯片的标题、删除它们或替换幻灯片上的图像。但我不知道如何创建现有幻灯片的副本。也许有人可以帮我解决这个问题。

【问题讨论】:

    标签: c# .net powerpoint openxml presentationml


    【解决方案1】:

    我一直在寻找类似的答案,并找到了一些资源来分享:

    http://msdn.microsoft.com/en-us/library/cc850834(office.14).aspx

    或更多样本

    http://msdn.microsoft.com/en-us/library/cc850828(office.14).aspx

    或本网站

    http://www.openxmldeveloper.com

    还有这个free book documenting the OpenXML standard 有点帮助。

    【讨论】:

    • 在您的图书链接中,您链接到本地​​文件。 =P
    【解决方案2】:

    这是您正在寻找的我的东西的一个例子,但如果没有,请告诉我:http://openxmldeveloper.org/articles/7429.aspx

    【讨论】:

      【解决方案3】:

      对于 C#

      File.Copy(SourceFile,ExportedFile);
      

      你基本上保留了原始文件。

      现在您打开 ExportedFile

      PowerPoint.Application ppApp = new PowerPoint.Application();
      PowerPoint.Presentation presentation;
      presentation = ppApp.Presentations.Open(ExportedFile, MsoTriState.msoFalse,   MsoTriState.msoTrue, MsoTriState.msoTrue);
      

      现在迭代所有幻灯片/形状

      foreach (PowerPoint.Slide slide in presentation.Slides)
      {
                          slide.Select();
                          foreach (PowerPoint.Shape shape in slide.Shapes)
                          {
                              if (shape.Type.ToString().Equals("<any type of shape>"))
                              {
                                  if (shape.TextFrame.TextRange.Text.Equals("<contains a name"))
                                  {
                                      shape.TextFrame.TextRange.Text = <new value>;
                                      shape.Delete(); // or delete
                                      shape.AddPicture(<your new picture>, MsoTriState.msoTrue, MsoTriState.msoTrue, left, top, width, height);
      
                                  }
                              }
                          }
      

      }

      希望这可以澄清您的要求。

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 2020-03-05
        • 1970-01-01
        相关资源
        最近更新 更多