Laden...

Word 2007 über Dienst steuern

Erstellt von HeRaider vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.875 Views
H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren
Word 2007 über Dienst steuern

Ich hab da ein kleines Problem. Ich versuche Word 2007 aus einem Dienst heraus zu steuern. Das Problem ist nur, dass ich kein Dokument öffnen kann. Der Dienst startet Word im Hintergrund und dann wenn das Dokument geöffnet wird bleibt Word einfach stehen und ich bekomme keine Exceptions oder sonstiges.
Wenn ich den gleichen Code in einer normalen Windowsanwendung verwende läuft es ohne Probleme. Muss ich da vielleicht noch irgendwelche Einstellungen vornehmen?

3.728 Beiträge seit 2005
vor 15 Jahren
Word fernsteuern

Hallo HeRaider,

Word ist eine Textverarbeitungsanwendung und wurde nicht dafür entworfen, um ohne Fenster im Hintergrund zu laufen. Du wirst deshalb mit COM-Automatisierung von Word aus einem Dienst heraus nicht glücklich werden.

Es gibt ein viel bessere, schnellere und robustere Methode, Word-Dokumente automatisch zu erzeugen: XML. Genauer gesagt WordML. Seit Word 2003 kann man Word-Dokumente auch in einem XML-Format speichern. Du kannst also Word-Dokumente ganz ohne Word erzeugen. Alles was Du dafür brauchst ist ein System.Xml.XmlTextWriter-Objekt.

Die Dokumentation zu WordML findest Du in der MSDN Library.

H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren

Danke für die Info. Das man Dokumente so erzeugen kann, ist mir klar. Darum geht es aber gar nicht. Das Ziel ist es nicht ein Dokument zu erzeugen. Das Ziel ist hier eigentlich nur, ein vorhandenes docx-Dokument (2007) zu öffnen und dieses wieder als doc (97-2003) zu speichern und dieser Prozess soll eben als Dienst laufen.

3.728 Beiträge seit 2005
vor 15 Jahren
Windows-Anwendung

Hallo HeRaider,

ich würde das als normale C#-Konsolen-Anwendung schreiben. Wenn die Konvertierung zeitgesteuert automatisch für einen bestimmten Ordner ausgeführt werden soll, würde ich das über den Windows-Taskplaner lösen.

H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren

Theoretisch sicher ein ganz guter Ansatz. Das Problem ist nur, dass es laut Kundenanforderung als Dienst laufen soll. Ich hab hier übrigens nen Link der ein Beispiel dazu liefert wie man Word konfigurieren muss.

http://support.microsoft.com/default.aspx?scid=kb;EN-US;288368

Hat das schon mal jemand probiert? Hört sich ja recht fehleranfällig an.

3.728 Beiträge seit 2005
vor 15 Jahren
Kundenanforderung

Hallo HeRaider,

Kundenanforderung oder nicht: Es wird nicht stabil funktionieren!

Microsoft gibt dazu hier http://support.microsoft.com/kb/257757/ das folgende Statement dazu ab:

Die Automatisierung von Microsoft Office-Anwendungen unter Verwendung unbeaufsichtigter, nicht interaktiver Clientanwendungen oder Clientkomponenten (wie ASP, DCOM und NT-Dienste) kann von Microsoft zum jetzigen Zeitpunkt weder empfohlen noch unterstützt werden, weil Office bei einer Ausführung in einer solchen Umgebung instabil werden kann und/oder sich die Anwendungen eventuell gegenseitig sperren.

Außerdem:

WARNING: Office was not designed, and is not safe, for unattended execution on a server. Developers who use Office in this manner do so at their own risk.

Ich würde den Kunden damit konfrontieren und ihm Alternativen vorschlagen, für die der Hersteller der automatisierten Applikation (in diesem Fall Microsoft) auch Support zusagt. Das ist nur im Interesse des Kunden. Wenn die Anforderung nicht stabil realisierbar ist, hat der Kunde nichts davon. Auch wenn er das noch so gerne möchte.

P.S.: Der KB-Artikel, den Du in Deinem letzten Post verlinkt hast, beschreibt, wie man die Sicherheits- und Aktivierungseinstellungen auf dem Server so einstellt, dass die Office-Anwendung unter einem bestimmten Konto ausgeführt wird. Ohne fundiertes Wissen über COM, DCOM und Thread-Apartments solltest Du sowieso davon die Finger lassen.

H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren

Ich weiß, dass es hier keinen Support von Microsoft gibt. Ich habe zu diesem Thema auch schon mit (inzwischen 3 8o) Mitarbeitern von Microsoft gesprochen. Es ist sicher nicht die beste Lösung und gefährlich ist es sicher auch. Mir bleiben hier allerdings so gut wie keine Alternativen. Das Programm soll einfach auf einem Server laufen und dort soll es natürlich keine Anmeldung geben. Also bleibt ja nur noch ein Dienst.

Oder kennt jemand vielleicht eine Alternative? Wie kann ich aus einem docx ein doc machen ohne, dass ich Word verwenden muss (Der Konverter von Microsoft kommt leider nicht in Frage da unser Kunde diesen nicht freigeben will)?

5.742 Beiträge seit 2007
vor 15 Jahren

Der Konverter von Microsoft kommt leider nicht in Frage da unser Kunde diesen nicht freigeben will?

Der wäre aber ideal dafür geeignet.
Was verstehst du unter "nicht freigeben will"?

H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren

Hallo zusammen,

evtl. hilft
>

Hört sich zwar ganz nett an aber ich habe da leider nichts von einer docx-Unterstützung gelesen.

Der wäre aber ideal dafür geeignet.
Was verstehst du unter "nicht freigeben will"?

Ganz einfach. Kein Mitarbeiter bei unserem Kunden wird dieses Tool installiert haben und die Installation ist auch verboten.

Gibt übrigens noch ne geringe Chance (5-10%), dass es vielleicht doch noch freigegeben wird. Darauf kann ich mich aber leider nicht verlassen weil ich natürlich einen Abgabetermin einzuhalten habe.

664 Beiträge seit 2005
vor 15 Jahren

Du bist dir bewusst, dass .docx ein Teil von OOXML ist?

H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren

Oh ja sorry da hab ich gar nicht dran gedacht. Hab nur nach docx gesucht. Werde ich mal testen.

H
HeRaider Themenstarter:in
81 Beiträge seit 2008
vor 15 Jahren

Sorry wegen Doppelpost aber gibt es eigentlich noch andere Programme die ähnliche Funktionalitäten bereitstellen?