L'en-tête disparaît après SaveAs dans IronWord
SaveAs() comme appel de sauvegarde standard sans aucune perte d'en-tête signalée. Traitez cela comme une possible particularité propre à l'environnement plutôt que comme un défaut produit confirmé, et vérifiez-le dans votre propre environnement avant d'appliquer la solution de contournement ci-dessous.Dans certains environnements, lors du remplissage d'un modèle DOCX avec IronWord et de l'écriture du résultat avec SaveAs(), on a observé que l'en-tête du modèle disparaît du fichier généré, même si les espaces réservés fusionnent correctement.
Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

Dans l'environnement où cela a été observé, l'en-tête a été conservé lors de l'écriture du document avec Save() plutôt qu'avec SaveAs(). Cela n'a pas été corroboré dans d'autres environnements ni dans le changelog d'IronWord — d'autres guides IronWord utilisent SaveAs() comme appel de sauvegarde standard sans problème de perte d'en-tête, traitez donc cela comme propre à l'environnement plutôt que comme un défaut produit confirmé.
Solution
1. Charger le modèle
Ouvrez le DOCX source avec WordDocument.
using IronWord;
using System.Collections.Generic;
var templatePath = @"C:\Templates\CityAttorneyCoverSheetTemplate.docx";
var outputPath = @"C:\Output\merged.docx";
var doc = new WordDocument(templatePath);
using IronWord;
using System.Collections.Generic;
var templatePath = @"C:\Templates\CityAttorneyCoverSheetTemplate.docx";
var outputPath = @"C:\Output\merged.docx";
var doc = new WordDocument(templatePath);
Imports IronWord
Imports System.Collections.Generic
Dim templatePath As String = "C:\Templates\CityAttorneyCoverSheetTemplate.docx"
Dim outputPath As String = "C:\Output\merged.docx"
Dim doc As New WordDocument(templatePath)
2. Remplacer les espaces réservés
Fusionnez vos valeurs à travers doc.Texts, ce qui est l'approche recommandée pour le remplacement de modèle.
var replacements = new Dictionary<string, string>
{
["{CaseNumber}"] = "2026-CR-12345",
["{DefendantName}"] = "John Doe",
["{DefendantAge}"] = "34",
["{DefendantAttorney}"] = "Jane Smith",
};
foreach (var kv in replacements)
{
doc.Texts.ForEach(t => t.Replace(kv.Key, kv.Value));
}
var replacements = new Dictionary<string, string>
{
["{CaseNumber}"] = "2026-CR-12345",
["{DefendantName}"] = "John Doe",
["{DefendantAge}"] = "34",
["{DefendantAttorney}"] = "Jane Smith",
};
foreach (var kv in replacements)
{
doc.Texts.ForEach(t => t.Replace(kv.Key, kv.Value));
}
Imports System.Collections.Generic
Dim replacements As New Dictionary(Of String, String) From {
{"{CaseNumber}", "2026-CR-12345"},
{"{DefendantName}", "John Doe"},
{"{DefendantAge}", "34"},
{"{DefendantAttorney}", "Jane Smith"}
}
For Each kv In replacements
doc.Texts.ForEach(Sub(t) t.Replace(kv.Key, kv.Value))
Next
Iterer chaque entrée sur doc.Texts remplace chaque jeton d'espace réservé par sa valeur fusionnée dans tout le corps du document.
3. Enregistrer avec Save(), pas SaveAs()
Dans l'environnement où ce problème a été observé, écrire la sortie avec doc.Save(outputPath) a conservé l'en-tête intact, tandis que doc.SaveAs(outputPath) l'a supprimé. Traitez cela comme une solution de contournement à essayer, et non comme une différence de comportement universelle confirmée entre les deux méthodes.
doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)

Remarques
- Si votre flux de travail nécessite
SaveAs(): vérifiez sur la dernière version d'IronWord si l'en-tête survit dans votre environnement. - Si le problème réapparaît : attachez-vous à une version fonctionnelle précédente comme solution à court terme pendant que le comportement est analysé.

