Feedback

C# - Word: Word-Dokument automatisch in HTML umwandeln

Veröffentlicht von am 17.10.2006
(3 Bewertungen)
Dieses Snippet wandelt ein herkömmliches Word-Dokument (unter Verwendung des Word-Objektmodells) in eine HTML-Datei um. Das besondere dabei ist, dass keinerlei COM-Verweise benötigt werden und das Snippet mit jeder Word-Version ab Word 97 oder höher funktioniert.
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

// using System.Reflection; nicht vergessen!

/// <summary>
/// Wandelt ein bestimmtes Word-Dokument in HTML um.
/// </summary>
/// <param name="source">Quelldokument</param>
/// <param name="destination">Zieldokument</param>
public static void ConvertWord2Html(string source, string destination)
{ 
    // Konstante für Word-HTML-Ausgabeformat
    const int WORD_HTML_FORMAT=8;                  

    // COM-Metadaten von Word.Application aus der Registry laden
    Type wordApplication=Type.GetTypeFromProgID("Word.Application");

    // Neue Instanz von Word erzeugen
    object word = Activator.CreateInstance(wordApplication);

    // Word sichtbar machen (Visible=true)
    //wordApplication.InvokeMember("Visible",BindingFlags.IgnoreCase | BindingFlags.SetProperty | BindingFlags.Public,null,word,new object[1]{true});

    // Dokumentauflistung abrufen
    object documents = wordApplication.InvokeMember("Documents", BindingFlags.IgnoreCase | BindingFlags.GetProperty | BindingFlags.Public, null, word, new object[0]);

    // COM-Metadaten von Word.Documents ermitteln
    Type wordDocuments = documents.GetType();

    // Quelldokument laden
    object document=wordDocuments.InvokeMember("Open", BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.OptionalParamBinding, null, documents, new object[1] {source});

     // COM-Metadaten von Word.Document ermitteln
    Type wordDocument = document.GetType();

    // HTML erzeugen
    wordDocument.InvokeMember("SaveAs", BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.OptionalParamBinding, null, document, new object[2] {destination,WORD_HTML_FORMAT});

    // Word schließen
    wordApplication.InvokeMember("Quit", BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.OptionalParamBinding, null, word, new object[0]);
}
Abgelegt unter Word, HTML, konvertieren, DOC.

1 Kommentare zum Snippet

lypô schrieb am 09.11.2014:
Wow! Das hilft. Besser als jede Medizin, nur nicht so bitter. :-))
Für mich brauchte ich nicht das Format-8, sondern 11 (filtert.html) und 7 (Unicode). Das war 'n bisschen Bastelei, da ich für die Filter nichts fand. ...schluchz!
Bedankt!

Edit: Das wordDoc muss nach dem "SaveAs" wieder geschlossen werden, da die erzeugte Datei sonst nur mit ReadOnly aufrufbar ist - was File.ReadAllLines ausschließt.

 

Logge dich ein, um hier zu kommentieren!