Kopfzeile verschwindet nach SaveAs in IronWord

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

Hinweis:Dieses Verhalten wurde nur in einer Umgebung gemeldet und wird nicht durch das Changelog von IronWord bestätigt — andere IronWord-Anleitungen verwenden 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().

Word-Vorlage mit nicht ersetzten Platzhaltern und ohne Kopfzeile

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

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

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

Zusammengeführtes Word-Dokument mit erhaltener Kopfzeile und ausgefüllten Platzhaltern

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.

Hinweis:Platzhalter werden immer noch während der Durchlaufung erkannt und ersetzt, selbst wenn die Kopfzeile verloren geht, daher ist eine erfolgreiche Zusammenführung allein kein Beweis, dass die Kopfzeile beibehalten wurde. Öffnen Sie die Ausgabe und überprüfen Sie.

Curtis Chau
Technischer Autor

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

Weiterlesen
Bereit anzufangen?
Nuget Downloads 48,355 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronWord
Führen Sie ein Beispiel aus und sehen Sie zu, wie aus Ihren Daten ein Word-Dokument wird.