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.
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>
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 );
}
J'ai le même problème et dans mon cas <w:br />
la balise a fonctionné.
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.