Sto usando openxml WordProcessingDocument per aprire un modello di Word e sostituire il segnaposto x1 con una stringa. Funziona bene a meno che non abbia bisogno che la stringa contenga una nuova riga. Come posso sostituire x1 con il testo potrebbe contenere righe nuove che la parola riconoscerebbe? Ho provato \ n \ r ma questi non funzionano
Giusto per spiegare ulteriormente quando il modello di parole è aperto, lo leggo in uno StreamReader, quindi uso. Sostituisci per sostituire x1.
Per inserire newline, devi aggiungere un’istanza Break
alla Run
.
Esempio:
run.AppendChild(new Text("Hello")); run.AppendChild(new Break()); run.AppendChild(new Text("world"));
L’XML prodotto sarà qualcosa del tipo:
Hello world
Ecco una funzione C # che prenderà una stringa, la dividerà in interruzioni di riga e la renderà in OpenXML. Per utilizzare, creare un’istanza di Run e passarla nella funzione con una stringa.
void parseTextForOpenXML( Run run, string textualData ) { string[ ] newLineArray = { Environment.NewLine }; string[ ] textArray = textualData.Split( newLineArray, StringSplitOptions.None ); bool first = true; foreach ( string line in textArray ) { if ( ! first ) { run.Append( new Break( ) ); } first = false; Text txt = new Text( ); txt.Text = line; run.Append( txt ); }
Ho lo stesso problema e nel mio caso il
funzionato.
Anche se questa domanda ha già una risposta, ho un altro approccio per risolvere domande come:
Come posso fare XXX con OpenXML ??
In questo caso è ansible utilizzare il potente strumento di produttività Microsoft OpenXML (noto anche come OpenXmlSdkTool ). Scarica qui