Создание презентации PowerPoint 2007 из шаблона

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

  • Текстовый слайд
  • Слайд изображения

Теперь приложение должно создать копию файла шаблона, создать несколько копий слайдов с текстом и изображениями и заменить заполнители содержимого некоторым содержимым.

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


person Alexander    schedule 01.04.2009    source источник


Ответы (3)


Я искал аналогичный ответ и нашел несколько ресурсов, которыми можно поделиться:

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

Существует также эта бесплатная книга, документирующая стандарт OpenXML, которая в некоторой степени полезный.

person Norman H    schedule 21.07.2009
comment
В ссылке на книгу вы ссылаетесь на локальный файл. = P - person Maiku Mori; 29.11.2009

Это пример того, что вы ищете, но если нет, дайте мне знать: http://openxmldeveloper.org/articles/7429.aspx

person Todd Main    schedule 24.02.2010

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

                            }
                        }
                    }

}

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

person mike27015    schedule 05.04.2013