Když pro danou úlohu není k dispozici žádná funkce Excel, programátoři Pythonu sáhnou po PyXLL.
PyXLL je nástroj, který překlenuje propast mezi Microsoft Excel a Pythonem. Umožňuje vám bezproblémově integrovat kód a funkce Pythonu do tabulek aplikace Excel. S PyXLL se Excel stává platformou pro využití knihoven a schopností Pythonu.
PyXLL slouží jako doplněk aplikace Excel. Můžete jej použít k psaní funkcí a maker Pythonu přímo v prostředí VBA Excelu. PyXLL pak funguje jako interpret a spouští kód v buňkách Excelu, čímž otevírá mnoho možností. Některé z nich zahrnují automatizaci složitých úkolů, pokročilou analýzu dat a vizualizaci dat.
Přehled PyXLL
PyXLL funguje tak, že v procesu aplikace Excel spustí interpret Pythonu. To dává vašemu kódu Python, běžícímu v PyXLL, přímý přístup k datům a objektům aplikace Excel. Nástroj je napsán v C++ a používá stejnou základní technologii jako Excel. To znamená, že kód Pythonu běžící v PyXLL je obvykle mnohem rychlejší než Excel VBA kód.
Instalace a nastavení
Chcete-li nainstalovat PyXLL, přejděte na Web PyXLL a stáhněte si doplněk. Ujistěte se, že verze Pythonu a verze Excelu, které si vyberete, odpovídají verzím nainstalovaným ve vašem systému. PyXLL je k dispozici pouze pro verzi Excelu pro Windows.
Po dokončení stahování otevřete příkazový řádek a spusťte tento příkaz:
pip install pyxll
Musíš mít ve svém systému nainstalovaný Pip pro spuštění výše uvedeného příkazu. Poté použijte balíček PyXLL k instalaci doplňku PyXLL:
pyxll install
Instalační program se zeptá, zda jste si stáhli doplněk. Zadejte ano a poté zadejte cestu k souboru zip obsahujícímu doplněk. Poté dokončete instalaci podle pokynů na obrazovce.
Začínáme s PyXLL
Jakmile plugin nainstalujete, spusťte Excel. Před jeho spuštěním se zobrazí výzva s výzvou Spustit zkušební verzi nebo Kup nyní. Zkušební verze vyprší po třiceti dnech a budete si muset zakoupit licenci, abyste mohli PyXLL nadále používat.
Klikněte na Spustit zkušební verzi knoflík. Tím se spustí Excel s nainstalovaným doplňkem.
Na Příklad PyXLL Tab, klikněte na O PyXLL knoflík. Zobrazí se vám cesta, do které jste doplněk nainstalovali, spolu s cestami ke konfiguračním souborům a souborům protokolu.
Cesta obsahující konfigurační soubor je důležitá, protože tento soubor budete muset později upravit, takže si ji poznamenejte.
Vystavení funkcí Pythonu Excelu
Chcete-li vystavit funkci Pythonu Excelu jako uživatelsky definovanou funkci (UDF), použijte @xl_func dekoratér. Tento dekoratér instruuje PyXLL, aby funkci zaregistroval do Excelu a zpřístupnil ji uživatelům.
Například k odhalení Pythonu Fibonacci() funkce Excel jako UDF, můžete použít @xl_func dekoratér takto:
from pyxll import xl_func
@xl_func
deffibonacci(n):
This is a Python function that calculates the Fibonacci sequence.
if n < 0:
raise ValueError("n must be non-negative")
elif n == 0or n == 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
Uložte tento kód s příponou .py a poznamenejte si cestu ke složce, do které soubor ukládáte.
Nyní otevřete konfigurační soubor PyXLL v editoru a přejděte dolů na řádek začínající „pythonpath“. Toto nastavení je obvykle seznam složek, ve kterých bude PyXLL hledat moduly Pythonu. Přidejte cestu ke složce, která obsahuje zdrojový kód Fibonacciho funkce.
Poté přejděte dolů na „moduly“ a přidejte svůj modul. Pokud jste například uložili soubor jako fibonacci.py, přidejte jméno"fibonacci" do seznamu:
Tím se odhalí funkce modulu, které používají @xl_func dekoratér do Excelu. Poté se vraťte do Excelu a na Příklad PyXLL Tab, klikněte na Znovu načtěte PyXLL tlačítko pro synchronizaci změn v konfiguračním souboru. Poté můžete zavolat Python fibonacci fungovat jako jakýkoli jiný vzorec Excel.
Můžete vytvořit tolik funkcí, kolik potřebujete, a vystavit je Excelu stejným způsobem.
Předávání dat mezi Excelem a Pythonem
PyXLL podporuje použití externích knihoven Pythonu, jako jsou Pandy. Umožňuje vám předávat data z těchto knihoven do Pythonu a naopak. Například můžete použijte Pandy k vytvoření náhodného datového rámce a předat jej do Excelu. Ujistěte se, že je ve vašem systému nainstalován Pandas, a poté vyzkoušejte tento kód:
from pyxll import xl_func
import pandas as pd
import numpy as np
@xl_func("int rows, int columns: dataframe
", auto_resize=True)
defrandom_dataframe(rows, columns):
data = np.random.rand(rows, columns)
column_names = [chr(ord('A') + x) for x in range(columns)]
return pd.DataFrame(data, columns=column_names)
Stejným postupem byste měli vystavit tento modul a jeho funkce Excelu. Pak zkuste zavolat na random_dataframe fungovat jako jiný vzorec Excel:
=random_dataframe(10,5)
Počet řádků a sloupců můžete libovolně měnit.
Předdefinované datové rámce můžete předat Excelu stejným způsobem. Je také možné importovat data Excelu do skriptu Python pomocí Pandas.
Omezení PyXLL
- Kompatibilita Windows a Excel: PyXLL je primárně navržen pro Windows a pracuje s Microsoft Excel na Windows. Může mít omezenou funkčnost nebo problémy s kompatibilitou na platformách jiných než Windows, protože je optimalizován pro prostředí Windows.
- Nasazení: Nasazení tabulek založených na PyXLL koncovým uživatelům vyžaduje, aby měli nainstalovaný Python s minimálními závislostmi nebo běhové prostředí Pythonu dodávané s tabulkou. To znamená, že uživatelé, kteří chtějí používat tabulky založené na PyXLL, musí mít na svých počítačích nainstalovaný Python.
- Křivka učení: Efektivní používání PyXLL vyžaduje určité znalosti programování v Pythonu a znalost objektového modelu Excelu. Uživatelé, kteří nejsou obeznámeni s Pythonem nebo objektovým modelem Excelu, možná budou muset investovat čas do učení se těchto konceptů, než plně využijí možnosti PyXLL.
- Cena licence: PyXLL je komerční produkt a v závislosti na vašem použití a požadavcích mohou být s jeho používáním spojeny licenční náklady. Náklady na používání PyXLL závisí na faktorech, jako je počet uživatelů, rozsah nasazení a licenční smlouvy.
Měli byste stále používat funkce aplikace Excel?
Záleží na tom, čeho chcete dosáhnout. Vždy má smysl používat nativní funkce Excelu, když jsou k dispozici. Ale pro složitější úkoly, které vestavěné funkce Excelu nezvládnou, je PyXLL vynikajícím řešením.
Knihovna Pandas je dokonalým doplňkem pro PyXLL se svými analytickými schopnostmi a silnou podporou pro zpracování dat.