Pergunta

Eu preciso criar uma apresentação do PowerPoint 2007 a partir de um modelo com Open XML Format SDK 2.0. O modelo deve ser fornecido pelo cliente e é usado para um estilo de layout individual (fonte, cor ou imagem de fundo, ...). Ele precisa conter duas lâminas predefinidas:

  • Slide de texto
  • Slide de imagem

O aplicativo agora deve criar uma cópia do arquivo de modelo, criar várias cópias dos slides de texto e imagem e substituir os detentores de conteúdo por algum conteúdo.

Eu já encontrei alguns trechos de código da Microsoft Para editar o título de um slide, exclua -os ou substitua uma imagem em um slide. Mas não descobri como posso criar uma cópia de um slide existente. Talvez alguém possa me ajudar com isso.

Foi útil?

Solução

Eu tenho procurado uma resposta semelhante e encontrei alguns recursos para compartilhar:

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

ou mais amostras

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

ou este site

http://www.openxmldeveloper.com

Há também isso Livro grátis documentando o padrão OpenXML o que foi um pouco útil.

Outras dicas

Este é um exemplo do que estou procurando, mas se não, me avise: http://openxmldeveloper.org/articles/7429.aspx

Para C#

File.Copy(SourceFile,ExportedFile);

Você basicamente mantém o arquivo original.

Agora você abre o ExportedFile

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

Agora itera todos os slides/formas

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

                            }
                        }
                    }

}

Espero que isso possa esclarecer sua solicitação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top