2009-04-01 2 views
4

Мне нужно создать презентацию PowerPoint 2007 из шаблона с помощью Open XML Format SDK 2.0. Заказчик должен предоставить шаблон и использоваться для индивидуального стиля макета (шрифт, цвет фона или изображение, ...). Она должна содержать два предопределенных слайдов:Создание презентации PowerPoint 2007 из шаблона

  • Текст слайд
  • Изображение слайд

Приложение должно теперь создать копию файла шаблона, создать несколько копий Шрифтом- и графических слайдов и замените контент-заполнители некоторым контентом.

Я уже нашел code snippets from Microsoft для редактирования названия слайда, удаления или замены изображения на слайде. Но я не узнал, как создать копию существующего слайда. Может, кто-то может мне помочь в этом.

ответ

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, который был несколько полезен.

+1

В вашей ссылке на книгу вы ссылаетесь на локальный файл. = P –

+0

Спасибо за подсказку, ссылка на книгу исправлена. –

0

Для 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); 

          } 
         } 
        } 

}

Надеется, что это может прояснить ваш запрос.

Смежные вопросы