Word Dokument mit Daten füllen aus .NET – Kopfzeile

Ich hatte schon geschrieben wie ich mit MergeField WordDokumente aus .NET mit Daten gefüllt habe. Ich musste nur leider selbst feststellen, das diese Methode nicht für die Kopf bzw. Fußzeile funktioniert

]
//HeaderFelder holen
 var header = doc.Sections[1].Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.Fields.GetEnumerator();
while (header.MoveNext())
 {
  Word.Field current = (Word.Field)header.Current;
  String feldname = current.Code.Text;
  feldname = feldname.Substring(13, feldname.Length - 30);

  current.Select();

  if (feldname.Equals("Datum"))
  {
   _WordApp.Selection.TypeText(DateTime.Today.ToShortDateString());
  }
 }

Innerhalb der Kopfzeile müssen genauso MergeFields sein!

Link:

http://social.msdn.microsoft.com/forums/en-US/vsto/thread/1bf05ac8-6fce-4c9d-bc23-9f887fd9d5a7/

Word Dokumente mit Datenfüllen aus .NET

Ich weiß das es wie so oft, viele Wege gibt, aber leider konnte ich derzeit nur einen richtig verstehen und deswegen anwenden.

Mein Ziel war es, ein Word-Dokument/Vorlage mit Daten aus der Datenbank zufüllen.

Durch das suchen nach “Platzhaltern” für Word und dann das er setzen der Felder mit richtigen Daten, bin ich dann auf “MergeFields” gestoßen. Diese werden in Word über “Menü—>Einfügen—>Felder” eingefügt und mit einem Namen versehen.

im .NET ist es dann relativ einfach die Felder zu ersetzen.

Object _Doc = @"H:\MeineVorlage.doc";

Word.ApplicationClass _WordApp = new Word.ApplicationClass();

object _False = false;
object _True = true;
object _NULL = null;
object _Missing = Type.Missing;

Word.Document Doc = _WordApp.Documents.Open(ref _SpecEN, ref
_Missing, ref _Missing, ref _Missing, ref _Missing, ref _Missing,
ref _Missing, ref _Missing, ref _Missing, ref _Missing, ref
_Missing, ref _Missing, ref _Missing, ref _Missing, ref _Missing,
ref _Missing);

var felder = Doc.Fields.GetEnumerator();

while (felder.MoveNext())
{
Word.Field current = (Word.Field)felder.Current;
String feldname = current.Code.Text;
feldname = feldname.Substring(13, feldname.Length - 30);
//ist jetzt nur noch der Name, welcher in Word eingeben wurde für das MergeField

//damit man den text verändern kann
current.Select();

//Prüfen ob das Feld "Land" entspricht, wenn ja,
//dann Text verändern und durch das verändern des textes, wird auch das Feld gelöscht/ersetzt
if (feldname.Equals("Land"))
{
_WordApp.Selection.TypeText("Deutschland");
}

_WordApp.Visible = true;
Doc.Activate();
}

Links:

C-Sharpcorner – WordAutomation