Laden...

Falsche Version für Office Interop

Erstellt von Christoph1972 vor 8 Jahren Letzter Beitrag vor 8 Jahren 4.311 Views
Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren
Falsche Version für Office Interop

Hallo Leute,

ich habe ein Problem mit einer Anwendung von mir, die Word- und Excel-Dokumente mittels Interop erstellt.

Auf meinem Rechner wurde im Sommer Office 2013 installiert. Wenn ich in dem betroffenen Projekt auf die Eigenschaften für den Verweis Microsoft.Office.Core gehe, bekomme ich die Version 15 angezeigt. Nun ist es so, dass es bei Rechnern mit Office 2010 zu einer FileNotFoundException kommt, da Version 15 nicht vorhanden ist.

Meine Idee war, dass ich den aktuellen Verweis lösche und einfach eine ältere Version auswähle. Mir wird noch Version 14 angeboten, nur damit ist es so, dass dann etliche Methoden ungültige Argumente haben, das Ganze scheint nicht ohne weiteres abwärtskompatibel.

Was gibt es für Möglichkeiten, das mein Programm wieder auf Rechnern mit Office 2010 läuft?

Office 2013 nachinstallieren, geht vom Lizenzmanagement momentan nicht, und schon gar nicht auf die Schnelle. Schade, das wäre eine einfache Lösung.

Das Programm wurde auf FW 4.0 umgestellt, damit besteht die Möglichkeit Embeded Interop Types zu verwenden. Aber das ist sicher mit einer erheblichen Nacharbeit verbunden. Lieber nicht…..

Auf Version 14 umstellen und sämtliche Methoden überarbeiten, ohne zu wissen ob Version 14 auf den Zielrechnern vorhanden ist. Lieber nicht…..

Habt ihr sonst noch Ideen, wie ich mein Programm wieder zum Laufen bekomme?

Gruß
Christoph

D
152 Beiträge seit 2013
vor 8 Jahren
Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Hallo,

vielen Dank für die Info! NetOffice werde ich mir bei dem nächsten Projekt definitiv vornehmen. Jetzt möchte ich das Programm nur wieder zum laufen bekommen. Es sollte eigentlich nur etwas ganz kleines an dem Programm angepasst werden und jetzt so etwas. Irgendwie muss es doch die Möglichkeit geben auf eine ältere Version zu verweisen, oder?

Gruß
Christoph

16.806 Beiträge seit 2008
vor 8 Jahren

Office ist doch mittlerweile(erst 2016, oder doch schon früher?) ein InPlace-Update; es können also keine zwei verschiedene Versionen installiert sein.

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Office ist doch mittlerweile(erst 2016, oder doch schon früher?) ein InPlace-Update; es können also keine zwei verschiedene Versionen installiert sein.

Ja, es sieht momentan danach aus. Aber wie kann man so alte Projekte betreuen? Ich bin aktuell nicht in der Lage eine lauffähige Version aus zuliefern und das ist mal übel....

Eine Überarbeitung kommt eigentlich nicht in Frage. Das Projekt ist von 2008 und soll eigentlich so bleiben wie es ist. Dennoch hätte ich das Projekt gerne wieder in einem wartbarem Zustand.

Gruß
Christoph

F
10.010 Beiträge seit 2004
vor 8 Jahren

Eine Überarbeitung kommt eigentlich nicht in Frage.

Dennoch hätte ich das Projekt gerne wieder in einem wartbarem Zustand. Das wiederspricht sich.

Das ist aber typisch in der SW Entwicklung, je weniger Zeit man vorher auf die Architektur verwendet, je mehr Zeit muss man nachher für die Pflege investieren.

Wenn das jetzt schon ein grosser aufwand ist es zu refactorieren, wird das nie besser.
Du musst entscheiden welchen Tod du sterben möchtest, jetzt arbeit reinstecken das es geht, oder es eben tot lassen.

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Eine Überarbeitung kommt eigentlich nicht in Frage.

Dennoch hätte ich das Projekt gerne wieder in einem wartbarem Zustand.
Das wiederspricht sich.

Wenn es eine Möglichkeit geben würde Version 15 auf die Ziel Rechner zu bekommen, oder ein Verweis auf eine ältere Version in VS zu setzen dann nicht.

Das ist aber typisch in der SW Entwicklung, je weniger Zeit man vorher auf die Architektur verwendet, je mehr Zeit muss man nachher für die Pflege investieren.

Gab es 2007/2008 andere Möglichkeiten? Die Tools mussten und müssen in der Lage sein Images in Word und Excel zu kopieren, an/in bestimmte Bereiche, da habe ich damals keine andere Lösung gefunden.

Wenn das jetzt schon ein grosser aufwand ist es zu refactorieren, wird das nie besser.

Das bringt schon alleine die Komplexität der Anforderung mit sich.

Du musst entscheiden welchen Tod du sterben möchtest, jetzt arbeit reinstecken das es geht, oder es eben tot lassen.

Es soll/muss noch einige Jahre wartbar sein. Ich möchte nicht mehr soviel Arbeit in ein altes Projekt stecken. Wenn, dann möchte eine komplette Überarbeitung, zu einem geeigneten Zeitpunkt. Den Tot jetzt zu sterben ist mangels Kapazitäten nicht möglich. Zur not muss der Auftraggeber Office 2013 besorgen, was natürlich nicht schön wäre.

Ja ja, immer diese Abhängigkeiten, die holen ein früher oder später immer ein....

Weitere produktive Vorschläge nehme ich gerne entgegen!

Gruß
Christoph

S
93 Beiträge seit 2008
vor 8 Jahren

Das Zauberwort, das Du hier suchst ist Latebinding.
Stelle Dein Anbinden von Office darauf um und dann sollte eigentlich jede Office Version damit arbeiten.

NetOffice arbeitet übrigens auch mit Latebinding.

F
10.010 Beiträge seit 2004
vor 8 Jahren

Ja, es gab schon damals das Late Binding.

A
764 Beiträge seit 2007
vor 8 Jahren

Zur not muss der Auftraggeber Office 2013 besorgen, was natürlich nicht schön wäre.

Hallo Christoph1972,

du wirst das ohne erheblichen Aufwand nicht in den Griff bekommen.
Deswegen:

  1. Dein Auftraggeber muss sich aktuelle Office-Versionen besorgen
  2. NetOffice implementieren

Die Tools mussten und müssen in der Lage sein Images in Word und Excel zu kopieren, an/in bestimmte Bereiche, da habe ich damals keine andere Lösung gefunden.

Alternativ könntest du dir eine Drittanbieter-Software besorgen, die dass kann. Z.b. Aspose

Gruß, Alf

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Vielen Dank erstmal an alle für die Unterstützung. Es kommt jetzt eine neue Office Version, damit ist das Problem für die nächste Zeit behoben.

@Alf
Eigentlich wollte ich die neue Version mit NetOffice machen. Verstehe ich dich richtig, Images einfügen geht damit nicht? Das wäre ungünstig und Aspose ist leider sehr teuer. Nun gut, wenn eine Neuauflage ansteht, muss noch mal eine neue Betrachtung erfolgen, vielleicht gibt es bis dahin weitere Möglichkeiten.

Gruß
Christoph

A
764 Beiträge seit 2007
vor 8 Jahren

@Alf
Verstehe ich dich richtig, Images einfügen geht damit nicht?

Du verstehst mich falsch. Zur Klarstellung: NetOffice ist ein Wrapper für Interop.Office. Damit kannst du alles machen wie bisher, nur einfacher und besser.

Ich komme beim besten Willen nicht drauf, wie du mich da falsch verstehen konntest.

W
872 Beiträge seit 2005
vor 8 Jahren

Bei einer Anpassung würde ich auf jeden Fall auf Office Open XML umstellen - Interop ist nicht 100% stabil und auf Windows Server oder Azure nicht unterstützt - außerdem kannst Du dann bei den SW-Lizenzen sparen.

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Ich komme beim besten Willen nicht drauf, wie du mich da falsch verstehen konntest.

_**:::

Das hat sich für mich so angehört als wenn das nicht geht. Gut das ich noch mal gefragt habe!

Bei einer Anpassung würde ich auf jeden Fall auf Office Open XML umstellen - Interop ist nicht 100% stabil und auf Windows Server oder Azure nicht unterstützt - außerdem kannst Du dann bei den SW-Lizenzen sparen.

Kann man damit Images einfügen?

Gruß
Christoph

1.029 Beiträge seit 2010
vor 8 Jahren

Hi,

**OpenXML **ist das aktuelle Dateiformat und ist selbstverständlich in der Lage auch Images zu speichern und in bestehende Dokumente einzufügen. OpenXML ist von der Implementierung definitiv aufwändiger - hat aber auch einige Vorteile:

  • schneller
  • multithreading möglich (und damit auch Serverbetrieb)
  • es wird auf dem jeweiligen Rechner kein Office benötigt

Du kannst dir ja bei Gelegenheit mal ein paar einfache Beispiele mit dem OpenXML-SDK anschauen um ein Gefühl für den Aufwand zu bekommen.

**NetOffice **dahingegen ist von außen her betrachtet eine Kopie der Interop-Assemblies, die du derzeit verwendest. Eine Umstellung auf NetOffice halte ich für wenig umständlich oder aufwändig - wenngleich hier sicher einige Tests gefahren werden müssen. Prinzipiell: Verweise austauschen, Usings austauschen - und das Meiste sollte gut funktionieren. Vorteil: Du bist nicht mehr an bestimmte Office-Versionen gebunden. (Achtung: Auch hier gibt es Einschränkungen - die API hat sich halt über die Jahre durchaus leicht gewandelt)

NetOffice kann somit alles, was Interop kann - OpenXML prinzipiell auch - aber eben nur auf Dateibasis - Änderungen in geöffneten Files oder schlicht Anwendungsautomatisierung von Office-Produkten wirst du mit OpenXML nicht können.

LG

W
872 Beiträge seit 2005
vor 8 Jahren

OpenXML ist nicht unbedingt schwerer als Interop, es ist nur eine komplett andere Sichtweise.
Bei Interop automatisierst Du Aktionen in der GUI, bei OpenXML musst Du mehr auf Basis des Dokuments denken.
Andre Krämer hat einen ganz ordentlichen Vortrag mit Beispiel-Code dazu - das ist für Word.

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Herzlichen Dank für die ganzen Infos! Wenn das Projekt wieder auf den Plan kommt, werde ich mir diesen Thread wieder vorknüpfen! 👍

Gruß
Christoph

S
6 Beiträge seit 2015
vor 8 Jahren

Wenn es eine Möglichkeit gibt an Office Automatisierung vorbei zu gehen würde ich dir in jedem Fall dazu raten.

Sofern du einfach nur ein Dokument generieren willst, braucht man dafür keine Fremdsteuerung der Office Anwendungen mehr(ab> Office 2007). Mit Ausnahme von PowerPoint gibt es dafür auch genug Open Source Projekte die den Umstieg hier einfach machen.

NetOffice ist ein Spezialfall und eigentlich mehr auf Addins ausgerichtet. Syntaktisch und sementisch ist es aber identisch zu den Interop Assemblies und setzt auf Automatisierung. Im Idealfall muss man hier nur ein Verweise und usings erstetzen um bestehenden Interop Code zum laufen zu bringen. Haben wir bei uns so gemacht und nie Probleme erfahren.

simulation data can take you only so far...
"the only test for a combat vessel is combat."