Jak mogę utworzyć dokument Word za pomocą Pythona?

Chciałbym utworzyć dokument Word za pomocą Pythona, jednak chcę ponownie wykorzystać jak najwięcej mojego istniejącego kodu tworzenia dokumentów, jak to możliwe. Obecnie używam XSLT do generowania pliku HTML, który programowo konwertuję do pliku PDF. Jednak mój klient prosi teraz o udostępnienie tego samego dokumentu w programie Word (.format doc).

Do tej pory nie miałem szczęścia znaleźć żadnych rozwiązań tego problemu. Czy ktoś zna bibliotekę open source (lub * gulp * a własnościowe rozwiązanie), które może pomóc rozwiązać ten problem?

Uwaga: wszystkie możliwe rozwiązania muszą działać na Linuksie. To chyba eliminuje pywin32.

Author: Bobrovsky, 2009-06-24

5 answers

Kilka sposobów tworzenia dokumentów programu Word za pomocą Pythona:

EDIT:

Ponieważ COM nie wchodzi w grę, proponuję po (zainspirowany odpowiedzią @kcrumley):

Używając biblioteki UNO do automatyzacji Open Office z Pythona, otwórz plik HTML w OOWriter, a następnie zapisz jako .doktorze.

EDIT2:

Istnieje teraz czysty Python projekt python-docx , który wygląda ładnie (nie korzystałem z niego).

 36
Author: codeape,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-22 20:50:09

Próbowałem python-docx z powodzeniem, umożliwia tworzenie i edycję docx w Pythonie

 21
Author: mbk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-08 19:54:11

1) jeśli chcesz po prostu trzymać kolejny krok na końcu bieżącego potoku, istnieje kilka opcji konwersji plików PDF do plików Word. Nie próbowałem 123PDFConverter, ale redaktorzy CNET polecają go( ten sam link); ma bezpłatny okres próbny; i obsługuje automatyzację. Podobnie jak w przypadku każdego konwertera plików innych firm, przebieg może się różnić, w zależności od tego, jak skomplikowane są pliki PDF i jak dobre jest oprogramowanie.

2) budowanie na automatyzacji com codeape sugestia, jeśli zautomatyzujesz program Word, możesz otworzyć rzeczywisty plik HTML w programie Word i wywołać polecenie "Zapisz jako", Aby zapisać go jako plik DOC.

 2
Author: Kevin Crumley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 21:52:43

Musiałem zrobić coś podobnego również z Pythonem. To jest daleko więcej pracy ręcznej niż chcę, ale dokumenty utworzone za pomocą pyRTF powodowały awarię Worda i OpenOffice i nie miałem motywacji, aby spróbować to rozgryźć.

Uważam, że najprostsze (ale nie idealne) jest stworzenie szablonu dokumentu programu Word z żądanymi stylami. Następnie Mój Python tworzy plik HTML, którego style <p> są oznaczone po słowie style. Następnie otwieram plik HTML w Wordzie i otwieram szablon w programie Word. Wycinam i wklejam cały tekst z pliku HTML do szablonu, a program Word formatuje go ponownie zgodnie ze stylami, które wcześniej skonfigurowałem. To pasuje do okazjonalnych akt w mojej sytuacji. To może nie zadziałać na twoją sytuację. Dla twojej wiadomości.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-16 04:14:37

Można zapisać jako pliki XML WORDML i spakować je do .format docx? Wszystko, czego twój klient potrzebuje, to filtr Word 2007, Jeśli nie ma go już w Office 2007.

Istnieje wiele przykładów.

Można również załadować XML bezpośrednio do Worda, począwszy od 2003, lub Tak mi powiedziano .

 0
Author: lavinio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-23 21:02:02