An spezielle Stelle in Word Datei schreiben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Halli Hallo,
ich hätte mal wieder eine Frage. Ich persönlich bin mir recht unsicher,
ob das überhaupt umsetzbar ist, aber vielleicht hat einer eine Idee.

Ich hole mir aus einer Excel File bestimmte Inhalte und möchte
diese nun in eine Word File schreiben. An sich könnte man dies auch flott per Hand machen, bei 1200 Dokumenten würde es aber wohl länger dauern ;) Problem ist, die Word File hat ein besonderes Format. Ich habe mal alle meine Paint Fähigkeiten hervorgeholt und das Word Dokument gezeichnet.
Bild
Dort wo das rote X ist, soll Text hinzugefügt werden. Nun die eigentliche Frage, kann man diesen Feldern irgendwie eine Art ID geben um mit Python an diese Stelle etwas zu schreiben? Wäre für Tips sehr dankbar.

Gruss
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Python kann Word-Dateien selbst nicht schreiben oder lesen. Es gibt auch keine wirklich brauchbaren Erweiterungsmodule um Word-Dateien schreiben zu können (lesen ist kein Problem) außer vielleicht PyUNO, mit dem Du mit OpenOffice.org kommunizieren kannst.

Was Du aber machen kannst: pywin32 benutzen und Word als COM-Applikation öffnen, und es dann ganz normal arbeiten lassen wie von VBA aus. Genauso kannst Du Excel als COM-Applikation benutzen und Dinge aus einem Spreadsheet lesen.

Ganz davon abgesehen: wenn es wirklich eine ganz kleine Applikation ist die Du schreiben willst würd ich das selbst in VBA eben schreiben. Gerade wenn es nur um die Kommunikation zwischen Excel und Word geht brauchst Du wohl kaum die Möglichkeiten von Python; das dürfte in VBA schnell gemacht sein.

--- Heiko.
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Erstmal danke für die flotte Antwort.
Was Du aber machen kannst: pywin32 benutzen und Word als COM-Applikation öffnen, und es dann ganz normal arbeiten lassen wie von VBA aus. Genauso kannst Du Excel als COM-Applikation benutzen und Dinge aus einem Spreadsheet lesen.
Genauso mache ich das zZ auch mit der Excel Datei, das Problem ist halt
die bestimme Position an die es geschrieben werden muss.
Zu der VBA Idee:
Ich habe keine Ahnung wie VBA funktioniert, daher hatte ich auf eine
Python Lösung gehofft aber falls das nicht möglich, oder viel zu schwer ist,
werde ich mir VBA mal angucken.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Alles was Du mit VBA machen kannst (COM-Anwendungen treiben) kannst Du auch mit Python, nicht einfacher, nicht schwieriger.

Was Du mit Word machen solltest: ein Label setzen (das einen Namen bekommt), dann mittels irgendeiner Funktion zu diesem Label springen (also den Cursor versetzen), und dann einfach den Text einfügen.

Ich hab das mal vor Ewigkeiten gemacht (als ich selbst noch Windows-Programmierer war), aber ich hab keine Ahnung wie die entsprechenden Funktionen hießen. MSDN hilft sicherlich weiter was die COM-Schnittstelle von Word angeht.

--- Heiko.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

pr0stAta hat geschrieben:kann man diesen Feldern irgendwie eine Art ID geben um mit Python an diese Stelle etwas zu schreiben?
Hi pr0stAta!

Ja, man kann Positionen markieren -- mit Textmarken. Die lassen sich recht einfach setzen und anspringen.

Sobald ich wieder im Windows bin, werde ich dir ein kleines Beispiel zusammenklicken. :-)

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Habe es gerade selbstgeschafft, allerdings nach viel rumprobieren
mit word importieren wir nun direkt eine csv datei als datenbank und
geben die als serienbrief in word aus. klappt sogar ganz gut :>
trotzdem danke
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

pr0stAta hat geschrieben:Habe es gerade selbstgeschafft
Hi pr0stAta!

Das freut mich. Dann lehne ich mich jetzt zurück.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben:man kann Positionen markieren -- mit Textmarken. Die lassen sich recht einfach setzen und anspringen.
Hi!

Ich habe zu diesem Thema jetzt endlich mal eine kleine Anleitung geschrieben. -- Nach drängen von Andy ;-)

http://www.python-forum.de/topic-6439.html

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten