Nagłówek znika po zapisie jako w IronWord
SaveAs() jako standardowego wywołania zapisu bez zgłoszonej utraty nagłówka. Potraktuj to jako możliwą osobliwość specyficzną dla środowiska, a nie potwierdzoną wadę produktu, i zweryfikuj we własnym środowisku przed zastosowaniem poniższego obejścia.W niektórych środowiskach zaobserwowano, że podczas wypełniania szablonu DOCX za pomocą IronWord i zapisywania wyniku z SaveAs() nagłówek szablonu znika z wygenerowanego pliku, mimo że kontenery są łączone poprawnie.
Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

W środowisku, w którym to zaobserwowano, nagłówek został zachowany podczas zapisywania dokumentu z Save() zamiast SaveAs(). Nie zostało to potwierdzone w innych środowiskach ani w dzienniku zmian IronWord — inne przewodniki IronWord używają SaveAs() jako standardowego wywołania zapisu bez problemu utraty nagłówka, więc potraktuj to jako specyficzne dla środowiska, a nie jako potwierdzoną wadę produktu.
Rozwiązanie
1. Załaduj szablon
Otworz zrodlowy plik DOCX za pomoca 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. Zastąp zastępniki
Polacz swoje wartosci przez doc.Texts, co jest zalecanym podejsciem do zamiany kontenerow.
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
Iterowanie przez kazdy wpis za pomoca doc.Texts zamienia kazdy kontener na jego wartosc laczenia w calosci dokumentu.
3. Zapisz z Save(), a nie SaveAs()
W środowisku, w którym zaobserwowano ten problem, zapisanie wyniku z doc.Save(outputPath) zachowało nagłówek nienaruszony, podczas gdy doc.SaveAs(outputPath) go usunął. Potraktuj to jako obejście do wypróbowania, a nie potwierdzoną uniwersalną różnicę w zachowaniu między tymi dwiema metodami.
doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)

Notatki
- Jesli twoj proces wymaga
SaveAs(): sprawdz w najnowszej wersji IronWord, czy naglowek przetrwa w twoim srodowisku. - Jeśli problem powróci: przypnij do wcześniej działającej wersji jako krótkoterminowe rozwiązanie, podczas gdy działanie jest badane.

