Seite 1 von 1

Worddokumente analysieren

Verfasst: Freitag 3. Februar 2012, 12:16
von patmaster
Hi,

Ich muss (möglichst in Python) Word-Dokumente auf bestimmte Sachen überprüfen.
Zb. gibt's Tabellen in Tabellen, werden bestimmte Format-vorlagen verwendet, usw...

Nun habe ich mir mal win32com angesehen, komm da aber nur soweit das ich den Text des Dokuments anzeigen kann, sonst jedoch nix.

Hat jemand eine Idee wie ich das am besten löse?
Gibt's eigentlich irgendwo ne vernünftige Doku zu win32com? Es heist man kann die VBA Doku verwenden, aber das scheint irgendwie nicht zu zutreffen.

Danke im Vorraus !

Re: Worddokumente analysieren

Verfasst: Freitag 3. Februar 2012, 19:21
von problembär
patmaster hat geschrieben:werden bestimmte Format-vorlagen verwendet
Eine wirklich gute Doku zu win32com hab' ich noch nicht gefunden. Wahrscheinlich, weil es ein Interface zu ganz verschiedenen Windows-Programmen ist. Zu Word hatte wohl noch niemand Lust, das im einzelnen zu beschreiben. Der Grund könnte sein, daß das in der VBA-Hilfe von Word ganz gut beschrieben ist. Guck' auch mal auf der Word-CD, manchmal wird die VBA-Hilfe nicht standardmäßig mitinstalliert.
Einstieg dürfte auch der Makro-Recorder sein. Damit aufzeichnen, was man ungefähr machen will, dann das Makro angucken und die Hilfe nach den Objekten usw. abfragen.
Ich benutze das PythonWin-IDE, das bei Objekten praktischerweise immer gleich die Methoden mit anzeigt, sobald man einen Punkt dahinter setzt.
Im Ergebnis sollte dieses Skript alle Formatvorlagen im Dokument ausgeben:

Code: Alles auswählen

#!/usr/bin/env python
# coding: cp1252

import win32com.client

word = win32com.client.Dispatch('Word.Application')
word.Visible = 1
word.WindowState = 1
document = word.Documents.Add("C:\\somedocument.doc")
selection = word.Selection
a = document.Styles
builtinstyles = {}
selfdefined = {}
for i in a:
    n = i.NameLocal
    if i.BuiltIn == True:
        builtinstyles[n] = None
    else:
        selfdefined[n] = None
print "Eingebaute Formatvorlagen:"
for i in builtinstyles:
    print i
print
print "Benutzerdefinierte Formatvorlagen:"
for i in selfdefined:
    print i
Word 97, Python 2.4. Wenn's bei neueren Word-Versionen auch klappt, spricht das für eine gute Abwärtskompatibilität der Microsoft-Produkte. Ich bin zwar mit vielem nicht einverstanden, was sie machen, aber in dem Punkt sind sie meistens recht gut. Muß man ihnen lassen. ;)

Re: Worddokumente analysieren

Verfasst: Montag 6. Februar 2012, 08:30
von patmaster
problembär hat geschrieben:
patmaster hat geschrieben:werden bestimmte Format-vorlagen verwendet
Eine wirklich gute Doku zu win32com hab' ich noch nicht gefunden. Wahrscheinlich, weil es ein Interface zu ganz verschiedenen Windows-Programmen ist. Zu Word hatte wohl noch niemand Lust, das im einzelnen zu beschreiben. Der Grund könnte sein, daß das in der VBA-Hilfe von Word ganz gut beschrieben ist. Guck' auch mal auf der Word-CD, manchmal wird die VBA-Hilfe nicht standardmäßig mitinstalliert.
Einstieg dürfte auch der Makro-Recorder sein. Damit aufzeichnen, was man ungefähr machen will, dann das Makro angucken und die Hilfe nach den Objekten usw. abfragen.
Ich benutze das PythonWin-IDE, das bei Objekten praktischerweise immer gleich die Methoden mit anzeigt, sobald man einen Punkt dahinter setzt.
Im Ergebnis sollte dieses Skript alle Formatvorlagen im Dokument ausgeben:

Code: Alles auswählen

#!/usr/bin/env python
# coding: cp1252

import win32com.client

word = win32com.client.Dispatch('Word.Application')
word.Visible = 1
word.WindowState = 1
document = word.Documents.Add("C:\\somedocument.doc")
selection = word.Selection
a = document.Styles
builtinstyles = {}
selfdefined = {}
for i in a:
    n = i.NameLocal
    if i.BuiltIn == True:
        builtinstyles[n] = None
    else:
        selfdefined[n] = None
print "Eingebaute Formatvorlagen:"
for i in builtinstyles:
    print i
print
print "Benutzerdefinierte Formatvorlagen:"
for i in selfdefined:
    print i
Word 97, Python 2.4. Wenn's bei neueren Word-Versionen auch klappt, spricht das für eine gute Abwärtskompatibilität der Microsoft-Produkte. Ich bin zwar mit vielem nicht einverstanden, was sie machen, aber in dem Punkt sind sie meistens recht gut. Muß man ihnen lassen. ;)
Danke für deine Antwort. Hab ganz vergessen, noch mal rein zuschauen ob jemand schlauer ist also ich :)
Mittlerweile hatte ich folgenden Code erarbeitet der mit alignment und Formatvorlagen ausgibt:

Code: Alles auswählen

for par in doc.Paragraphs:
    print par.Alignment
    print par.Format.Style
Es scheint also ob die VBA-Doku doch zu einem gewissen Teil übereinstimmt. Manche sachen gehen, andere nicht....
PythonWin-IDE werd ich mal versuchen...danke für den Tipp!