Kopfzeile verschwindet nach SaveAs in IronWord
SaveAs() als ihren Standard-Speicheraufruf ohne gemeldeten Verlust der Kopfzeile. Behandeln Sie dies als möglichen umgebungsspezifischen Sonderfall und nicht als bestätigten Produktfehler, und überprüfen Sie es in Ihrer eigenen Umgebung, bevor Sie die untenstehende Problemumgehung anwenden.In einigen Umgebungen wurde beobachtet, dass beim Befüllen einer DOCX-Vorlage mit IronWord und Schreiben des Ergebnisses mit SaveAs() die Kopfzeile der Vorlage aus der generierten Datei verschwindet, obwohl die Platzhalter korrekt zusammengeführt werden.
Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

In der Umgebung, in der dies beobachtet wurde, blieb die Kopfzeile erhalten, wenn das Dokument mit Save() statt mit SaveAs() geschrieben wurde. Dies wurde nicht in anderen Umgebungen oder im Changelog von IronWord bestätigt — andere IronWord-Anleitungen verwenden SaveAs() als ihren Standard-Speicheraufruf ohne Kopfzeilenverlust-Problem, behandeln Sie dies daher als umgebungsspezifisch und nicht als bestätigten Produktfehler.
Lösung
1. Laden Sie die Vorlage
Öffnen Sie das Quell-DOCX mit 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. Ersetzen Sie die Platzhalter
Führen Sie Ihre Werte durch doc.Texts zusammen, was der empfohlene Ansatz für den Austausch von Vorlagen ist.
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
Jeden Eintrag über doc.Texts zu iterieren, tauscht jeden Platzhalter-Token im gesamten Dokumentenkörper gegen seinen Zusammenführungswert aus.
3. Speichern Sie mit Save(), nicht SaveAs()
In der Umgebung, in der dieses Problem beobachtet wurde, blieb die Kopfzeile beim Schreiben der Ausgabe mit doc.Save(outputPath) erhalten, während doc.SaveAs(outputPath) sie entfernte. Behandeln Sie dies als Problemumgehung zum Ausprobieren, nicht als bestätigten universellen Verhaltensunterschied zwischen den beiden Methoden.
doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)

Anmerkungen
- Wenn Ihr Workflow
SaveAs()erfordert: Überprüfen Sie in der neuesten IronWord-Version, ob die Kopfzeile in Ihrer Umgebung erhalten bleibt. - Wenn das Problem erneut auftritt: Fixieren Sie auf eine zuvor funktionierende Version als kurzfristige Minderung, während das Verhalten untersucht wird.

