Laden...

Word: Word-Dokument automatisch in HTML umwandeln

Erstellt von Rainbird vor 16 Jahren Letzter Beitrag vor 13 Jahren 6.953 Views
Rainbird Themenstarter:in
3.728 Beiträge seit 2005
vor 16 Jahren
Word: Word-Dokument automatisch in HTML umwandeln

Beschreibung:

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.

// 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]);
}

Schlagwörter: Word, HTML, konvertieren, DOC

Quelle: .NET-Snippets

F
26 Beiträge seit 2008
vor 14 Jahren

Hallo,
ist es möglich den fortschritt einer Konvertierung abzufragen oder in erfahrung zu bringen wann diese beendet ist ?

61 Beiträge seit 2009
vor 13 Jahren

Hallo,
ist es möglich den fortschritt einer Konvertierung abzufragen oder in erfahrung zu bringen wann diese beendet ist ?

bei diesem Beispiel könnte das schwierig werden, denn das speichern läuft hier ab:


     // 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});

Also in diesem Beispiel denke ich nicht.

In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.