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/

ein Exchange-Benutzer mit meheren Mail-Adressen mit “Senden als” Berechtigung und Regeln im Outlook

Der Exchange 2010 läuft nun endlich. POP3Sauger ist auch schon für die ersten Adressen eingerichtet.

OutlookWebAccess ist auch schon aktiv im Test.

Jedoch hatte ich dann das problem – Ein Postfach, welches über 3 Mail-Adressen erreichbar sein sollte (Test1@, Test2@, Test3@) und ich möchte den Absender ändern.

Zu POP3-Zeiten hat man sich einfach mehere POP3-Kontos eingerichtet und dann das Konto ausgewählt über welches am senden will. Jedoch habe ich es nun anders gelöst.

Mein “Haupt-Mailkonto” Test1@ binde ich im Outlook ein.

Die Konten Test2 und Test3 lege ich als ganz normale Postfächer an. Diesen Postfächern sage, ich aber, das die Mails an den Benutzer Test1 weiter geleitet werden sollen.

Eigenschaften von dem Benutzer (von dem die Mails weitergeleitet werden sollen) –> Nachrichtenübermittlungseinstellungen –> Zustelloptionen – dort “Weiterleiten an” und “durchsuchen” und dann den Benutzer auswählen, welcher die Mails bekommen soll.

Dann erlaube ich dem Benutzer Test1 noch das er auch Mails als Test2/3 senden darf.

Rechte Maustaste auf den Benutzer Test2 und dann “Berechtigung Senden als verwalten” (alternativ auf der rechten seite, nach dem der benutzer ausgewählt ist, dann “..senden als…”). Jetzt muss der Benutzer ausgewählt werden, welcher als Test2 senden darf, also in der Beispiel Config wäre es der Benutzer Test1, denn Test1 soll ja Mails als Test2 verschicken dürfen


PowerShell:

Add-ADPermission 
 -Identity 'CN=Test2,OU=Mails,DC=Home,DC=local' 
 -User 'HOME\Test1' 
 -ExtendedRights 'Send-as'

Dadurch das es eigenständige Mail-Benutzer sind, kann Outlook/Exchange auch wieder Regeln erstellen, die auf den Empfänger erstellt werden, also das alle Mails an test2@ in den Order Test2 gelegt werden.

Regeln können anhand von Verteilerlisten auch erstellt werden, jedoch geht das “SendenAls” nicht für Verteilerlisten (zumindest nach meinem Kenntnissstand).

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

VS Referenzen auf anderen Computer fehlen

Wenn man in einem VisualStudio Projekt externe Libs benutzt und diese einbindet. MUSS der Ordner mit den Libs auch in der Projektmappe von den VisualStudio Projekt mit drin sein und erst danach die Libs zum Projekt hinzufügen.

Wenn das Projekt den Lib-Ordner nicht kennt, macht VS absolute Pfade und somit ist es nicht mehr SVN/TFS tauglich.

Nach dem aber der Lib-Ordner auch dem VS-Projekt bekannt ist, werden relative Pfade zu den Libs und schon funktioniert es wieder im Team.

VS_Libs1

Der Screen zeigt, zwar auch den absoluten Pfad an, jedoch in der projektdatei an sich, ist er als relativer angegeben.

In der Projektdatei (XML-Ansicht) steht dann folgendes und wie gut zuerkennen ist, ist Convert.dll als relative Lib eingebunden und die Name.dll wurde absolut eingebunden

<ItemGroup>
  <Reference Include="Convert">
    <HintPath>Libs\Convert.dll</HintPath>
  </Reference>
  <Reference Include="Name">
    <HintPath>c:\Test\bin\Debug\Name.dll</HintPath>
  </Reference>
</ItemGroup>

Erster Post

Herzlich Willkommen

Ich möchte hier jetzt regelmäßig meine Probleme / Problemlösungen niederschreiben. Im Vorrangig im Bereich von Webentwicklung und Cliententwicklung mit C#.NET, aber auch über Windows Server und Exchange werde ich schreiben.

Viel Spaß beim lesen.

Norbert