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);Imports IronWord
Imports System.Collections.Generic
Dim templatePath = "C:\Templates\CityAttorneyCoverSheetTemplate.docx"
Dim outputPath = "C:\Output\merged.docx"
Dim doc = 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));
}Dim replacements = 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))
NextJeden 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)
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.

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.