Insertar nuevas líneas en Word usando OpenXML

Estoy usando openxml WordProcessingDocument para abrir una plantilla de Word y reemplazar placeholder x1 con una cadena. Esto funciona bien a menos que necesite que la cadena contenga una nueva línea. ¿Cómo puedo reemplazar x1 con el texto que puede contener nuevas líneas que la palabra reconocería? He intentado \ n \ r pero estos no funcionan

Para seguir explicando cuando se abre la plantilla, la leo en StreamReader y luego uso .Replace para reemplazar x1.

Para insertar nuevas líneas, debe agregar una instancia de Break a la Run .

Ejemplo:

 run.AppendChild(new Text("Hello")); run.AppendChild(new Break()); run.AppendChild(new Text("world")); 

El XML producido será algo así como:

  Hello  world  

Aquí hay una función C # que tomará una cadena, la dividirá en saltos de línea y la renderizará en OpenXML. Para usar, crear una instancia de Ejecutar y pasarlo a la función con una cadena.

 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 ); } 

Tengo el mismo problema y en mi caso, la etiqueta funcionó.

A pesar de que esta pregunta ya está respondida, tengo otro enfoque para resolver preguntas como:

¿Cómo puedo hacer XXX con OpenXML?

En estos casos, puede utilizar la poderosa herramienta de productividad Microsoft OpenXML (también conocida como OpenXmlSdkTool ). Descarga aquí.

  1. Crear un nuevo documento de oficina
  2. Agregue las partes del documento que desea reproducir con OpenXML SDK.
  3. Abra el documento de la oficina con la herramienta de productividad Microsoft OpenXML
  4. Haga clic en “Reflejar código”
  5. En el lado derecho, verá ahora el documento reflejado en el código C #.