A punto de volverse loco con este problema. Estoy seguro de que es tan simple que me lo estoy perdiendo, pero no puedo saber cómo cambiar el contenido de un control de contenido en Word 2007 con OpenXml SDK v2.0 en C#.¿Cómo se cambia el contenido de un control de contenido en Word 2007 con OpenXML SDK 2.0?
He creado un documento de Word con un control de contenido de texto sin formato. La etiqueta para este control es "Nombre". En el código, me gustaría abrir el documento de Word, encontrar este control de contenido y cambiar el contenido sin perder el formato.
La solución finalmente llegué al trabajo consistía en encontrar el control de los contenidos, la inserción de una carrera después de que, después de retirar el control de contenido como tal:
using (WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Open(filePath, true)) {
MainDocumentPart mainDocumentPart = wordProcessingDocument.MainDocumentPart;
SdtRun sdtRun = mainDocumentPart.Document.Descendants<SdtRun>()
.Where(run => run.SdtProperties.GetFirstChild<Tag>().Val == "FirstName").Single();
if (sdtRun != null) {
sdtRun.Parent.InsertAfter(new Run(new Text("John")), sdtRun);
sdtRun.Remove();
}
Esto hace cambiar el texto, pero pierde todo el formato. ¿Alguien sabe cómo puedo hacer esto?
Parece que esta solución no funcionará si el control de contenido es el único elemento en un párrafo (es decir, no está rodeado por otro texto). Como trabajo rápido, coloqué un espacio en un lado del control de contenido. Publicaré una mejor solución cuando encuentre una. – Jason