Nagłówek znika po zapisie jako w IronWord

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

Zwróć uwagęTo zachowanie zostało zgłoszone tylko w jednym środowisku i nie jest potwierdzone przez dziennik zmian IronWord — inne przewodniki IronWord używają 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().

Szablon Word z niezamienionymi kontenerami i bez naglowka

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

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

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

Laczony dokument Word z zachowanym naglowkiem i wypelnionymi kontenerami

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.

Zwróć uwagęZastępniki są nadal znajdowane i zastępowane podczas przechodzenia, nawet gdy nagłówek jest utracony, więc samo pomyślne łączenie nie jest potwierdzeniem, że nagłówek został zachowany. Otwórz wynik i sprawdź.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 48,355 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronWord
uruchom próbkę zobacz, jak twoje dane stają się dokumentem Word.