web-dev-qa-db-fra.com

Insertion de nouvelles lignes dans Word à l'aide d'OpenXML

J'utilise openxml WordProcessingDocument pour ouvrir un modèle Word et remplacer l'espace réservé x1 par une chaîne. Cela fonctionne très bien sauf si j'ai besoin que la chaîne contienne une nouvelle ligne. Comment puis-je remplacer x1 par du texte pouvant contenir des retours à la ligne que Word reconnaîtrait? J'ai essayé\n\r mais cela ne fonctionne pas

Juste pour expliquer davantage lorsque le modèle Word est ouvert, je l'ai lu dans un StreamReader puis j'utilise .Replace pour remplacer x1.

52
Danny

Pour insérer des retours à la ligne, vous devez ajouter une instance Break au Run.

Exemple:

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

Le XML produit sera quelque chose comme:

<w:r>
  <w:t>Hello</w:t>
  <w:br/>
  <w:t>world</w:t>
</w:r>
85
codeape

Voici une fonction C # qui prendra une chaîne, la divisera sur les sauts de ligne et la rendra en OpenXML. Pour l'utiliser, instanciez un Run et passez-le dans la fonction avec une chaîne.

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

J'ai le même problème et dans mon cas <w:br /> la balise a fonctionné.

10
parm

Bien que cette question soit déjà répondue, j'ai une autre approche pour résoudre des questions comme:

Comment puis-je faire XXX avec OpenXML ??

Dans ce cas, vous pouvez utiliser le puissant puissant outil de productivité Microsoft OpenXML (également connu sous le nom OpenXmlSdkTool ). Téléchargez ici.

  1. Créer un nouveau document Office
  2. Ajoutez les parties au document que vous souhaitez reproduire avec OpenXML SDK.
  3. Ouvrez le document Office avec l'outil de productivité Microsoft OpenXML
  4. Cliquez sur "Reflect Code"
  5. Sur le côté droit, vous verrez maintenant votre document reflété dans le code C #.
8
Mischa