In procinto di impazzire con questo problema. Sono sicuro che è così semplice che mi manca, ma non riesco a scoprire come modificare il contenuto di un controllo dei contenuti in Word 2007 con OpenXml SDK v2.0 in C#.Come si modifica il contenuto di un controllo contenuto in Word 2007 con OpenXml SDK 2.0?
Ho creato un documento di Word con un controllo del contenuto di testo normale. Il tag per questo controllo è "FirstName". Nel codice, mi piacerebbe aprire il documento di Word, trovare questo controllo del contenuto e modificare il contenuto senza perdere la formattazione.
La soluzione che ho finalmente avuto modo di lavorare coinvolto trovare il controllo dei contenuti, l'inserimento di una corsa dopo di esso, quindi rimuovendo il controllo dei contenuti in quanto tale:
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();
}
Questo non cambia il testo, ma ho perso tutta la formattazione. Qualcuno sa come posso fare questo?
Sembra che questa soluzione non funziona se il controllo dei contenuti è l'unico elemento in un paragrafo (vale a dire non è circondato da altro testo). Come rapido intervento, ho solo messo uno spazio su un lato del controllo dei contenuti. Pubblicherò una soluzione migliore quando ne trovo una. – Jason