Automatisieren Sie die Konvertierung von Word-Dateien in andere Formate

Ein Staat. Strukturen generieren Berichte in Dokumentdateien. Irgendwo geschieht dies von Hand und irgendwo automatisch. Stellen Sie sich vor, Sie werden angewiesen, eine Menge solcher Dokumente zu verarbeiten. Dies kann erforderlich sein, um bestimmte Informationen zu isolieren oder nur den Inhalt zu überprüfen. Wir müssen nur unformatierten Text ohne Grafiken und Bilder entfernen. Beispielsweise können solche Daten zur weiteren Analyse leichter in ein neuronales Netzwerk verschoben werden.

Hier sind einige Optionen für die gewöhnlichste Person:

  • Handles durchlaufen nacheinander alle Dateien. Nach dem zehnten Dokument wird Ihnen der Gedanke kommen, dass Sie etwas falsch machen.
  • Versuchen Sie, im Internet eine spezielle Bibliothek (Erweiterung) für die Arbeit mit Dokumentdateien in einer Programmiersprache zu finden, die Sie besitzen. Verbringen Sie eine weitere Stunde damit, zu verstehen, wie Sie mit dieser Bibliothek arbeiten. Sie müssen sich auch der Tatsache stellen, dass die Prinzipien der Arbeit mit doc und docx leicht unterschiedlich sind.
  • Versuchen Sie, alle Dokumente automatisch in einem anderen Format zu speichern, was die Arbeit erleichtert.

Nur über die letzte Option und wir werden reden.

Und ein VBS-Skript beeilt sich, uns zu helfen. Ein vbs-Skript kann über die Befehlszeile aufgerufen werden, was in jeder Programmiersprache möglich ist.

Erstellen Sie eine Datei converter.vbs

Const wdFormatText = 2 Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents.Open(Wscript.Arguments.Item(0), True) objDoc.SaveAs WScript.Arguments.Item(1), wdFormatText objWord.Quit 

In der ersten Zeile geben wir an, in welches Format wir konvertieren werden: 2 - in txt, 17 - in pdf.
Alle Formate können hier eingesehen werden . In der zweiten Zeile öffnen wir das Wort direkt. Nach dem Öffnen können Sie die folgende Zeile hinzufügen:

 objWord.Visible = TRUE 

Dies wird dazu führen, dass wir den Prozess des Öffnens von Word sehen. Dies kann nützlich sein, wenn irgendwann ein Fehler auftritt, das Wort sich nicht selbst schließt und ohne diese Zeile der Prozess nur über den Task-Manager abgebrochen werden kann und wir einfach auf das Kreuz klicken können.

An der Eingabeaufforderung wird das Skript wie folgt ausgeführt:

 converter.vbs ___\_.docx ___\___ 

Wscript.Arguments.Item (0) ist der vollständige_Pfad_zu_Datei \ Dateiname.docx
WScript.Arguments.Item (1) - vollständiger_Pfad_zu_Speicherspeichern \ Dateiname ohne Erweiterung
Dementsprechend öffnen wir in der dritten Zeile unseres Skripts die Datei und speichern sie in der nächsten Zeile im angegebenen Format. Und am Ende schließen wir das Wort.

Es gibt noch einen kleinen Trick, den du brauchst. Manchmal kann es aufgrund von Unterschieden in den Wortversionen oder aus anderen Gründen schwören, dass die Datei beschädigt ist. Beim manuellen Öffnen der Datei wird die Warnung "Die Tabelle ist beschädigt, öffnen Sie die Datei weiter?" Angezeigt. Und Sie müssen nur auf "Ja" klicken, aber das Skript wird an dieser Stelle seine Arbeit einstellen.

Vbs hat ein sehr ungeschicktes Try-Catch-Konstrukt. Sie können dieses Problem umgehen, indem Sie nur zwei Zeilen hinzufügen. Insgesamt lautet ein vollwertiges stabiles Skript wie folgt:

 Const wdFormatText = 2 Set objWord = CreateObject("Word.Application") objWord.Visible = TRUE On Error Resume Next Set objDoc = objWord.Documents.Open(Wscript.Arguments.Item(0), True) Set objDoc = objWord.Documents.Open(Wscript.Arguments.Item(0), True) objDoc.SaveAs WScript.Arguments.Item(1), wdFormatText objWord.Quit 

Wie Sie sehen können, wird das Öffnen der Datei dupliziert. Wenn mit der Datei alles in Ordnung ist, wird die Datei einfach zweimal geöffnet, und im Fehlerfall wird die Datei einfach weiter geöffnet.

Und für jeden Feuerwehrmann ein Beispiel dafür, wie eine Funktion in Python aussehen könnte

 import os #folder_from = os.getcwd() + r'\words' - ,    word  #folder_to = os.getcwd() + r'\txts' - ,    def convert(file_name): str1 = folder_from + r"/" + file_name str2 = folder_to + r"/" + file_name[:file_name.rfind('.')] os.system('converter.vbs "' + str1 + '" "' + str2 + '"') #  

Wenden Sie diese Funktion anschließend einfach auf alle Dateien an, die konvertiert werden müssen.

Zusammenfassung


  1. Diese Lösung ist für alle Wortformate geeignet.
  2. Sie haben diesen Artikel nicht länger als 10 Minuten gelesen.
  3. Sie können die Kenntnis jeder Programmiersprache implementieren.

Source: https://habr.com/ru/post/de441736/


All Articles