2012-05-04 13 views
6

Tengo una presentación de Powerpoint que contiene 3 diapositivas. Cada diapositiva tiene un Textbox que es un marcador de posición. Me gustaría reemplazar los contenidos de Textbox en una diapositiva.Cambiar texto en un cuadro de texto en diapositiva de Powerpoint

necesito saber cómo hacer esto usando C# y OpenXML

Gracias una tonelada

+0

¿Lo hiciste funcionar? ¿Puedes publicar la solución por favor? –

Respuesta

1

hacer esto para cada diapositiva, que desea cambiar:

ODP.ShapeTree tree = slide.Slide.CommonSlideData.ShapeTree; 
     foreach (ODP.Shape shape in tree.Elements<ODP.Shape>()) 
     { 
      // Run through all the paragraphs in the document 
      foreach (ODD.Paragraph paragraph in shape.Descendants().OfType<ODD.Paragraph>()) 
      { 
       foreach (ODD.Run run in paragraph.Elements<ODD.Run>()) 
       { 
        if (run.Text.InnerText.Contains("PLACEHOLDER")) 
        { 
         run.Text = new ODD.Text("Your new text"); 
        } 
       } 
      } 
     } 

Tenga en cuenta, que si los marcadores de posición de su plantilla contienen espacios, esto puede crear dos elementos de ejecución individuales. Entonces en lugar de un elemento de ejecución con run.Text de "Place holder", puede obtener una ejecución con run.text de "Place" y otra con run.Text "holder".

+1

tengo un escenario, que solo tengo un párrafo, no hay elementos secundarios dentro de él. Estoy tratando de agregar elemento run y text dentro de él todavía no funciona. Se agradece cualquier ayuda – Eldho

+0

Cuando hago esto y guardo el archivo, el texto modificado no está allí. Si inspecciono 'run.Text' en el depurador, se muestra el texto actualizado. –

Cuestiones relacionadas