2011-07-14 15 views
20

Czy ktoś wie o dostępie do MS Excela z Pythona? W szczególności staram się tworzyć nowe arkusze i wypełniać je danymi, w tym formułami.Excel Python API

Najlepiej chciałbym zrobić to na Linuksie, jeśli to możliwe, ale może zrobić to z VM, jeśli nie ma innego sposobu.

+1

Ogólny komentarz jest taki, że same formaty plików Office są bardzo skomplikowane, ale większość narzędzi pakietu Office będzie odczytywanych w znacznie prostszych formatach. Czy rozważałeś zamiast tego napisać '.csv'? – katrielalex

Odpowiedz

28

xlwt i xlrd może odczytywać i zapisywać pliki programu Excel, bez użycia samego Excel:

http://www.python-excel.org/

+1

Niestety nie obsługują formuł –

+1

@jamesj: Możesz czytać/pisać formuły. Nie możesz ich ocenić. Zobacz np. https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/examples/formulas.py –

+1

Dziękuję, źle mnie zrozumiałem. Myślałem, że możesz je tylko napisać. –

2

Jest to z pewnością możliwe za pośrednictwem modelu obiektowego programu Excel poprzez COM: wystarczy użyć win32com moduły Pythona. Nie pamiętam więcej, ale kiedyś kontrolowałem Media Player poprzez COM z Pythona. To była bułka z masłem.

+1

Miałem nadzieję, że zrobię to na Linuksie, co nie dałoby mi dostępu do win32com –

+1

Tak, rozumiem. Ale jeśli chodzi o autorskie formaty Microsoftu (teraz otwarte, ale praktycznie bezużyteczne), lepiej zostawić generowanie i przetwarzanie dokumentów do oryginalnego kodu.Zawsze możesz znaleźć starszą wersję Excela, aby działał pod Wine ... –

5

Długi czas po oryginalne pytanie, ale ostatnia odpowiedź pchnął go top paszy ponownie. Inni mogą skorzystać z mojego doświadczenia z wykorzystaniem Pythona i Excela.

Używam trochę programu Excel i Python. Zamiast bezpośrednio używać modułów xlrd, xlwt, zwykle używam pand. Wydaje mi się, że pandy używają tych modułów jako importów, ale dla tworzenia i czytania arkuszy kalkulacyjnych jest to znacznie łatwiejsze. Struktura danych w Pandas jest bardzo "podobna do arkusza kalkulacyjnego" i moim zdaniem życie jest o wiele łatwiejsze.

Inną opcją, której używam (nie w bezpośredniej odpowiedzi na twój problem) jest DataNitro. To pozwala na używanie Pythona bezpośrednio w programie Excel. Inny przypadek użycia, ale użyłbyś go tam, gdzie normalnie musiałbyś napisać kod VBA w Excelu.

+0

Dzięki, oba wyglądają jak ciekawe podejścia. Myślę, że oceniłem pandy w tym czasie, ale nie pamiętam, dlaczego go nie używałem. –

+0

Pandy rzeczywiście importują 'xlrd' i' xlwt'. –

3

napisałem klasę Pythona, który umożliwia pracę z programem Excel poprzez interfejs COM w systemie Windows http://sourceforge.net/projects/excelcomforpython/

Klasa korzysta win32com interakcję z programem Excel. Możesz użyć klasy bezpośrednio lub użyć jej jako przykładu. Wiele opcji zaimplementowanych, takich jak formuły tablicowe, formatowanie warunkowe, wykresy itp.

Powiązane problemy