L'en-tête disparaît après SaveAs dans IronWord

This article was translated from English: Does it need improvement?
Translated
View the article in English

Veuillez noterCe comportement n'a été signalé que dans un seul environnement et n'est pas corroboré par le changelog d'IronWord — d'autres guides IronWord utilisent 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().

Modèle Word avec espaces réservés non remplacés et sans en-tête

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)
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Document Word fusionné avec l'en-tête conservé et les espaces réservés remplis

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é.

Veuillez noterLes espaces réservés sont toujours trouvés et remplacés lors du parcours même lorsque l'en-tête est perdu, donc une fusion réussie ne confirme pas à elle seule que l'en-tête a été conservé. Ouvrez la sortie et vérifiez.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 48,355 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronWord
exécuter un échantillon regarder vos données devenir un document Word.