Benutzer mit den meisten Antworten
C#-Projekt mit Word-Automatisierung, ohne Office-Installation auf Ziel-PC möglich?

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
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
-
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
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.- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Montag, 19. August 2013 15:17
-
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
-
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
- Als Antwort vorgeschlagen Tom Lambert (Koopakiller)Moderator Montag, 19. August 2013 15:17
-
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
-
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