Raporty w PowerPoincie prosto z Pythona
Utworzono: 5 października 2011 Zaktualizowano: 1 października 2026
Jeden z ciekawszych projektów, jakie ostatnio zrobiłem, generator raportów z badań, który sam wypełnia firmowe szablony w PowerPoincie.
W firmie badawczej wyniki na końcu i tak lądują w prezentacji. Ktoś siedzi, kopiuje tabelki z Excela, wkleja wykresy, poprawia kolory, i tak przez kilkadziesiąt slajdów, a przy każdej poprawce danych od nowa.
Generator jest w Pythonie i steruje Excelem i PowerPointem przez OLE, czyli tak, jakby ktoś klikał w Office, tylko z kodu. Na starcie jest szablon prezentacji z kilkoma rodzajami slajdów wzorcowych.
Najciekawsze jest trafianie w odpowiednie szablony. Każdy typ pytania w badaniu ma przypisany typ slajdu, a na slajdzie wiadomo, który kształt to tytuł, który wykres, a który przypis, więc generator bierze pytanie, wybiera szablon, wypełnia go danymi i leci dalej. Raport, nad którym ktoś siedział dzień albo dwa, powstaje w kilka minut, a jak zmienią się dane, to puszczamy go jeszcze raz.
OLE ma jednak swoje humory. Trzeba mieć zainstalowanego Office'a, więc całość chodzi na jednej maszynie z Windowsem, czasem Excel zostaje w tle i blokuje plik, czasem PowerPoint wyskakuje z okienkiem, na które nikt nie klika. Sporo kodu to pilnowanie, żeby te procesy się poprawnie zamykały.
Ale działa i raporty robią się same, o ile żadne okienko nie czeka, aż ktoś kliknie OK.
Aktualizacja 2026
Jak na to dziś patrzę, to sporo tej roboty poszło na walkę z Office'em, a nie na same raporty. Dziś nie trzeba by go w ogóle uruchamiać, są biblioteki, które piszą pliki xlsx i pptx bezpośrednio, np. openpyxl i python-pptx, więc całość mogłaby chodzić na zwykłym serwerze, bez Windowsa i bez pilnowania, czy Excel nie wisi w tle.
A pewnie nawet nie pisałbym tego od zera, część takich raportów da się dziś wyklikać w narzędziach typu Power BI.