Pregunta

Necesito crear una presentación de PowerPoint 2007 a partir de una plantilla con Abrir formato XML SDK 2.0. La plantilla debe ser proporcionada por el cliente y se utiliza para un estilo de diseño individual (fuente, color o imagen de fondo, ...). Necesita contener dos diapositivas predefinidas:

  • Tobogán de texto
  • Diapositiva

La aplicación ahora debe crear una copia del archivo de plantilla, crear múltiples copias de las diapositivas de texto y imagen y reemplazar a los titulares de contenido con algún contenido.

Ya encontré algunos fragmentos de código de Microsoft Para editar el título de una diapositiva, eliminarlos o reemplazar una imagen en una diapositiva. Pero no descubrí cómo puedo crear una copia de una diapositiva existente. Tal vez alguien pueda ayudarme con esto.

¿Fue útil?

Solución

He estado buscando una respuesta similar y he encontrado algunos recursos para compartir:

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

o más muestras

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

o este sitio web

http://www.openxmldeveloper.com

También hay esto Libro gratuito que documenta el estándar OpenXML Lo cual fue algo útil.

Otros consejos

Este es un ejemplo de lo que estoy buscando, pero si no, hágamelo saber: http://openxmldeveloper.org/articles/7429.aspx

Para c#

File.Copy(SourceFile,ExportedFile);

Básicamente mantiene el archivo original.

Ahora abre el archivo exportado

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

Ahora itera todas las diapositivas/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 esto pueda aclarar su solicitud.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top