none
C#-Projekt mit Word-Automatisierung, ohne Office-Installation auf Ziel-PC möglich? RRS feed

  • Frage

  • Hallo

    Ich habe ein kleines Projekt für Datenübernahme, bei dem ich auch eine Referenz auf "Microsoft.Office.Interop.Word" (14.0 Object Library) verwenden muss. Es gibt einige Word-Dokumente, die auf RTF konvertiert werden müssen, bevor die Daten in eine neue Datenbank übernommen werden.

    Meine Frage jetzt:  auf dem Ziel-Rechner, auf dem ich dieses Übernahme-Tool installiert hätte ist kein Office installiert. Ist es trotzdem möglich meine Applikation zum Laufen zu bringen - d.h. nur die notwendigen Office-Dll's oder "Object Libraries" auf diesem Rechner zu installieren ? Oder muss eine komplette Office-Version installiert werden.

    Danke schon mal für eine Hilfestellung dazu & schönen Gruß

    Michael


    Michael Erlinger

    Montag, 19. August 2013 14:24

Antworten

  • bei dem ich auch eine Referenz auf "Microsoft.Office.Interop.Word" (14.0 Object Library) verwenden muss.

    Hallo Michael,

    eine Interop ist dazu da, aus .NET raus alte ActiveX Schnittstellen zu steuern und das setzt voraus, dass diese installiert & registriert und im Falle von Word ist das nun mal das komplette Word Programm; es muss also installiert sein.

    Es gibt auch den freien Word Viewer, nur dem fehlt die ActiveX Schnittstelle, hilft also nicht.

    Du könntest noch prüfen, ob Du mit dem OpenXMl SDK weiter kommst, da gibt es keine Abhängigkeiten zum Office Paket; siehe Arbeiten mit Open XML und Word


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert M.Erlinger Montag, 19. August 2013 14:57
    Montag, 19. August 2013 14:45
  • Hallo Michael,

    ohne installiertes Officepaket (bzw. zumindest die verwendeten Programme daraus) funktioniert das nicht.

    Wenn Du unabhängig von Office sein willst, bleibt dir entweder des OpenXML SDK oder Komponenten wie bspw. Aspose.Words, Aspose.Cells, ...

    Das OpenXML SDK ist kostenlos, IMHO aber sehr, sehr umständlich zu handhaben. Die Aspose Komponenten sind erheblich besser verwendbar, dafür aber nicht kostenlos.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert M.Erlinger Montag, 19. August 2013 14:57
    Montag, 19. August 2013 14:55
    Moderator

Alle Antworten

  • Hallo, grundsätzlich würde es ausreichen die DLL's in den selben Ordner zu kopieren, wo auch die EXE liegt. Die Frage ist nur, in wie fern man das darf. Ich denke nicht, das es erlaubt ist. Das einzige was ich dazu fand war das bzw. die Lizenzbestimmungen.

    Ich denke, das die einzige wirkliche Lösung darin besteht, die Dateien selbst zu parsen. Das hängt vom Format ab (DOC oder DOCX?).
    Für Excel gibt es da viele vorgefertigte Klassen, aber für Word fand ich nichts womit "alles" geht. Also entweder es findet noch jemand etwas dazu oder du musst selbst einen Parser schreiben.


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 19. August 2013 14:35
    Moderator
  • bei dem ich auch eine Referenz auf "Microsoft.Office.Interop.Word" (14.0 Object Library) verwenden muss.

    Hallo Michael,

    eine Interop ist dazu da, aus .NET raus alte ActiveX Schnittstellen zu steuern und das setzt voraus, dass diese installiert & registriert und im Falle von Word ist das nun mal das komplette Word Programm; es muss also installiert sein.

    Es gibt auch den freien Word Viewer, nur dem fehlt die ActiveX Schnittstelle, hilft also nicht.

    Du könntest noch prüfen, ob Du mit dem OpenXMl SDK weiter kommst, da gibt es keine Abhängigkeiten zum Office Paket; siehe Arbeiten mit Open XML und Word


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert M.Erlinger Montag, 19. August 2013 14:57
    Montag, 19. August 2013 14:45
  • Hi,

    also ich glaube nicht das du die dll´s einfach so mitkopieren darfst. Es bleibt das Parsen also übrig.

    Auch hier kann es zu rechtlichen Problemen kommen (in Deutschland sind meines wissens nach noch keine Softwarepatente erlaubt), wenn du eigene Implementierung verwendest.

    Am einfachsten ist es DOCX Dateien zuparsen. Der Aufbau der ???X ist relativ einfach: als äußerer Container ein zip file und innen drinn gibts xml files.

    Eine Beispiel Implementierung:

    http://www.codeproject.com/Articles/87711/Manipulate-Docx-with-C-without-Microsoft-Word-inst

    Hier findest du noch die Spec zu den Dateiformaten: http://msdn.microsoft.com/en-us/library/dd361853.aspx

    Es gab auch mal dazu einige Videos von Microsoft, die habe ich aber nicht mehr gefunden. Einfach suchen.

    Damit solltest du aber auf jeden fall ans Ziel kommen.

    Cya

    Brian

    Montag, 19. August 2013 14:48
  • Hallo Michael,

    ohne installiertes Officepaket (bzw. zumindest die verwendeten Programme daraus) funktioniert das nicht.

    Wenn Du unabhängig von Office sein willst, bleibt dir entweder des OpenXML SDK oder Komponenten wie bspw. Aspose.Words, Aspose.Cells, ...

    Das OpenXML SDK ist kostenlos, IMHO aber sehr, sehr umständlich zu handhaben. Die Aspose Komponenten sind erheblich besser verwendbar, dafür aber nicht kostenlos.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert M.Erlinger Montag, 19. August 2013 14:57
    Montag, 19. August 2013 14:55
    Moderator
  • Hallo

    Danke Euch für die raschen Rückmeldungen.

    OK - dann wird Office halt auch auf diesem Rechner installiert; was grundsätzlich ja kein Problem darstellt. Ich wollte dem Kunden einfach nur Installations-Arbeit ersparen.

    Besten Dank & schönen Gruß

    Michael


    Michael Erlinger

    Montag, 19. August 2013 14:57