32 votos

La inserción de saltos de línea en Word con OpenXML

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

Sólo para explicar aún más cuando la plantilla de word se abre la leí en un StreamReader, a continuación, utilizar .Reemplazar para reemplazar x1.

53voto

codeape Puntos 38576

Para insertar saltos de línea, yo creo que usted tiene que agregar un Break instancia a la Run.

Ejemplo:

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

El XML generado será algo como:

<w:r>
  <w:t>Hello</w:t>
  <w:br/>
  <w:t>world</wt>
</w:r>

12voto

Toolsmythe Puntos 81

Aquí está una función de C#, que tendrá una cadena, que se dividió en los saltos de línea y los muestran en OpenXML. Para utilizar, crear una carrera y pasar 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 );
    }

5voto

parm Puntos 41

Tengo el mismo problema y en mi caso <w:br /> etiqueta trabajado.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X