Cabeçalho Desaparecendo Após SalvarComo no IronWord

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

ObserveEste comportamento foi relatado apenas em um ambiente e não é corroborado pelo changelog do IronWord — outros guias do IronWord usam SaveAs() como sua chamada de salvamento padrão sem nenhuma perda de cabeçalho relatada. Trate isso como uma possível peculiaridade específica do ambiente, e não como um defeito confirmado do produto, e verifique em seu próprio ambiente antes de aplicar a solução alternativa abaixo.

Em alguns ambientes, ao preencher um modelo DOCX com o IronWord e gravar o resultado com SaveAs(), observou-se que o cabeçalho do modelo desaparece do arquivo gerado, embora os marcadores de posição se mesclem corretamente.

Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

Modelo Word com marcadores de posição não substituídos e sem cabeçalho

No ambiente onde isso foi observado, o cabeçalho foi preservado ao gravar o documento com Save() em vez de SaveAs(). Isso não foi corroborado em outros ambientes nem no changelog do IronWord — outros guias do IronWord usam SaveAs() como sua chamada de salvamento padrão sem problema de perda de cabeçalho, portanto trate isso como específico do ambiente, e não como um defeito confirmado do produto.

Solução

1. Carregue o Modelo

Abra o DOCX de origem com 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. Substitua os Marcadores de Posição

Mescle seus valores através do doc.Texts, uma abordagem simples de localizar/substituir; para modelos com muitos marcadores de posição que usam a sintaxe MERGEFIELD, a API dedicada WordDocument.MailMerge do IronWord também está disponível.

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

Iterando cada entrada sobre doc.Texts troca cada token de marcador de posição por seu valor de mesclagem em todo o corpo do documento.

3. Salve com Save(), não SaveAs()

No ambiente onde esse problema foi observado, gravar a saída com doc.Save(outputPath) manteve o cabeçalho intacto, enquanto doc.SaveAs(outputPath) o descartou. Trate isso como uma solução alternativa para tentar, não como uma diferença de comportamento universal confirmada entre os dois métodos.

doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)
$vbLabelText   $csharpLabel

Documento Word mesclado com o cabeçalho preservado e marcadores de posição preenchidos

Notas

  • Se seu fluxo de trabalho requer SaveAs(): verifique na versão mais recente do IronWord se o cabeçalho sobrevive em seu ambiente.
  • Se o problema reaparecer: fixe em uma versão anteriormente funcional como uma mitigação de curto prazo enquanto o comportamento é investigado.

ObserveOs placeholders ainda são encontrados e substituídos durante a travessia, mesmo quando o cabeçalho está perdido, portanto, uma fusão bem-sucedida por si só não é confirmação de que o cabeçalho foi mantido. Abra a saída e verifique.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Baixar 48,355 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronWord
executar um exemplo Veja seus dados se transformarem em um documento do Word.