Inserimento di newline in Word usando OpenXML

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

  1. Crea un nuovo documento di ufficio
  2. Aggiungi le parti al documento che desideri riprodurre con OpenXML SDK.
  3. Apri il documento dell’ufficio con lo strumento di produttività Microsoft OpenXML
  4. Clicca su “Rifletti codice”
  5. Sul lato destro vedrai ora il tuo documento riflesso nel codice C #.