Seite 1 von 1

MS Office speichern abfangen

Verfasst: Donnerstag 19. April 2007, 09:34
von diComm
Hallo

Ich arbeite an einer Software mit Delphi, in der ich Python als Scriptsprache benutze um das ganze etwas dynmaisch zu gestalten.

Ich habe eine Datenbank, in der MS Word Dokumente als Vorlagen sind, die ich mit Python beim öffnen mit Daten aus der DB abfülle... anschliessend soll der Kunde diese die abgefüllten Dokumente bearbeiten können und in die DB speichern...
das Problem ist, wie mache ich das mit dem zurückspeichern. Wie fange ich das speichern von Word ab... ohne VBA zu benutzen wenns geht. Man soll das Dokument wie gewohnt speichern können, nur anstatt auf die Festplatte soll es in eine Tabelle in der DB sein.

öffnen und abfüllen habe ich bereits mit Hilfe von win32com zurecht bekommen.
Weiss jemand Rat?

MfG
diComm

Re: MS Office speichern abfangen

Verfasst: Freitag 20. April 2007, 12:23
von lunar
diComm hat geschrieben:Man soll das Dokument wie gewohnt speichern können, nur anstatt auf die Festplatte soll es in eine Tabelle in der DB sein.
Ich habe keine Antwort auf deine Frage, sondern eine Gegenfrage ;)

Du willst MS-Word-Dokumente in Datenbank-Tabellen umsetzen? :shock:
Abgesehen davon, dass sich das reichlich obskur anhört, würde mich doch mal interessieren, wie man das anstellt...

Verfasst: Freitag 20. April 2007, 18:24
von Masaru
Wie man das anstellt ... tjoa ... mit Python würde ich persönlich nicht den Aufwand betreiben.

Für so einen Workflow sind nunmal die Microsoft ausgelegten Sprachen eher prädestiniert.

Eine Möglichkeit es anzustellen wäre nämlich, mit Word-Makros das Event des "Speicherns" abzufangen und einen eigenen Folgeablauf dann zu implementieren. Z.B. .. was weiss ich ... in den Tmp-Ordner mit einer UUID abspeichern, ein Flag setzen oder einen direkten API-Aufruf auf die Delphi-Anwendung zu hauen, dass besagte Datei wieder zurückgespeichert werden kann.

Letztendlich handelt es sich eher um eine Erweiterung als um eine tatsächliche Umleitung des "Speicherns" in ein Datenbankfeld ;).

Wenn man die Makros nicht mag (VBA), könnte man laut Google *g* auch den Objektinspektor von Delphi gleich verwenden, mit dem man Events wie z.B. das Speichern eines Worddokumentes ebenfalls abfangen kann.


Aber Python ... so gern ich doch meine Primärprogrammiersprache auch hab, würde ich eine andere Programmiersprache als Herrangehensweise empfehlen.

Hmm ... warum z.B. nicht gleich mit Delphi?

Ja mata,
>>Masaru<<

Re: MS Office speichern abfangen

Verfasst: Samstag 21. April 2007, 09:32
von diComm
lunar hat geschrieben: Du willst MS-Word-Dokumente in Datenbank-Tabellen umsetzen? :shock:
Abgesehen davon, dass sich das reichlich obskur anhört, würde mich doch mal interessieren, wie man das anstellt...
In dem ich die Dokumente in Delphi in einen Stream lade in diesen dann in ein Blobfeld in der DB speichere... um die Dokumente wieder zu lesen müssen sie wieder aus der DB via Stream auf die Festplatte... bei mir in den Temp Ordner.

VBA wäre eine möglichkeit... möchte ich aber nicht verwenden.

So wies aussieht werde ich dafür doch Delphi verwenden... Dort gibt es eine Komponente TWordApplication mit der man Word "fernsteuern" kann und auch Events abfangen kann...
Masaru hat geschrieben: Aber Python ... so gern ich doch meine Primärprogrammiersprache auch hab...
bei mir ist zwar Python nur meine Sekundärprogrammiersprache, aber sie ist mir irgendwie ans Herz gewachsen :)

Re: MS Office speichern abfangen

Verfasst: Sonntag 22. April 2007, 07:59
von lunar
diComm hat geschrieben:
lunar hat geschrieben: Du willst MS-Word-Dokumente in Datenbank-Tabellen umsetzen? :shock:
Abgesehen davon, dass sich das reichlich obskur anhört, würde mich doch mal interessieren, wie man das anstellt...
In dem ich die Dokumente in Delphi in einen Stream lade in diesen dann in ein Blobfeld in der DB speichere... um die Dokumente wieder zu lesen müssen sie wieder aus der DB via Stream auf die Festplatte... bei mir in den Temp Ordner.
Ach so ;) Du speicherst sie in einem BLOB... Ich dachte schon, du konvertierst das Word-Dokument automagisch in eine Tabelle ;)