Når det ikke er noen Excel-funksjon for jobben, søker Python-programmerere etter PyXLL.
PyXLL er et verktøy som bygger bro mellom Microsoft Excel og Python. Den lar deg sømløst integrere Python-kode og funksjonalitet i Excel-regneark. Med PyXLL blir Excel en plattform for å utnytte Pythons biblioteker og muligheter.
PyXLL fungerer som et Excel-tillegg. Du kan bruke den til å skrive Python-funksjoner og makroer direkte i Excels VBA-miljø. PyXLL fungerer deretter som tolk og kjører koden i Excel-celler, noe som åpner for mange muligheter. Noen av disse inkluderer automatisering av komplekse oppgaver, avansert dataanalyse og datavisualisering.
En oversikt over PyXLL
PyXLL fungerer ved å kjøre en Python-tolk i Excel-prosessen. Dette gir Python-koden din, som kjører i PyXLL, direkte tilgang til Excel-data og -objekter. Verktøyet er skrevet i C++ og det bruker samme underliggende teknologi som Excel. Dette betyr at Python-kode som kjører i PyXLL vanligvis er mye raskere enn Excel VBA-kode.
Installasjon og oppsett
For å installere PyXLL, gå til PyXLL nettsted og last ned tillegget. Sørg for at Python-versjonen og Excel-versjonen du velger samsvarer med de som er installert på systemet ditt. PyXLL er kun tilgjengelig for Windows-versjonen av Excel.
Når nedlastingen er fullført, åpne en ledetekst og kjør denne kommandoen:
pip install pyxll
Du trenger å ha Pip installert i systemet ditt for at kommandoen ovenfor skal kjøre. Bruk deretter PyXLL-pakken til å installere PyXLL-tillegget:
pyxll install
Installasjonsprogrammet vil spørre om du har lastet ned tillegget. Skriv inn ja og oppgi banen til zip-filen som inneholder tillegget. Følg deretter instruksjonene på skjermen for å fullføre installasjonen.
Komme i gang med PyXLL
Når du har installert programtillegget, start Excel. Før den starter, vil det dukke opp en melding som ber deg om det Begynn testperiode eller Kjøp nå. Prøveversjonen vil utløpe etter tretti dager, og du må da kjøpe en lisens for å fortsette å bruke PyXLL.
Klikk på Begynn testperiode knapp. Dette vil starte Excel med det installerte tillegget.
På PyXLL Eksempel Tab, Klikk på Om PyXLL knapp. Dette vil vise deg banen der du installerte tillegget, sammen med stier til konfigurasjonen og loggfilene.
Banen som inneholder konfigurasjonsfilen er viktig siden du må redigere den filen senere, så noter den.
Eksponering av Python-funksjoner for Excel
For å eksponere en Python-funksjon for Excel som en brukerdefinert funksjon (UDF), bruk @xl_func dekoratør. Denne dekoratøren instruerer PyXLL om å registrere funksjonen med Excel, og gjør den tilgjengelig for brukere.
For eksempel å avsløre en Python fibonacci() funksjon til Excel som en UDF, kan du bruke @xl_func dekoratør som følger:
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)
Lagre denne koden med filtypen .py og legg merke til banen til mappen du lagrer filen i.
Åpne nå PyXLL-konfigurasjonsfilen i en editor og rull ned til en linje som begynner med "pythonpath". Denne innstillingen er vanligvis en liste over mapper som PyXLL vil søke etter Python-moduler. Legg til banen til mappen som inneholder kildekoden til Fibonacci-funksjonen.
Bla deretter ned til "moduler" og legg til modulen din. For eksempel, hvis du lagret filen som fibonacci.py, legg til navnet "fibonacci" på listen:
Dette vil avsløre modulfunksjonene som bruker @xl_func dekoratør til Excel. Gå deretter tilbake til Excel og på PyXLL Eksempel Tab, Klikk på Last PyXLL på nytt knappen for at endringene i konfigurasjonsfilen skal synkroniseres. Du kan da ringe Python fibonacci fungerer som en hvilken som helst annen Excel-formel.
Du kan lage så mange funksjoner du trenger og eksponere dem for Excel på samme måte.
Sende data mellom Excel og Python
PyXLL støtter bruk av eksterne Python-biblioteker, som Pandas. Den lar deg overføre data fra disse bibliotekene til Python og omvendt. For eksempel kan du bruk Pandas til å lage en tilfeldig dataramme og send den til Excel. Sørg for at Pandas er installert i systemet ditt, og prøv deretter denne koden:
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)
Du bør følge samme prosess for å eksponere denne modulen og dens funksjoner for Excel. Prøv så å ringe til random_dataframe fungerer som en annen Excel-formel:
=random_dataframe(10,5)
Du kan endre antall rader og kolonner som du vil.
Du kan sende forhåndsdefinerte datarammer til Excel på samme måte. Det er også mulig å importere Excel-data til Python-skriptet ved hjelp av Pandas.
Begrensninger for PyXLL
- Windows og Excel-kompatibilitet: PyXLL er primært designet for Windows og fungerer med Microsoft Excel på Windows. Den kan ha begrenset funksjonalitet eller kompatibilitetsproblemer på ikke-Windows-plattformer, da den er optimalisert for Windows-miljøer.
- Implementering: Deployering av PyXLL-drevne regneark til sluttbrukere krever at de har Python installert med minimale avhengigheter eller Python-kjøretiden sammen med regnearket. Dette betyr at brukere som ønsker å bruke PyXLL-drevne regneark må ha Python installert på maskinene sine.
- Læringskurve: Å bruke PyXLL effektivt krever litt kunnskap om Python-programmering og kjennskap til Excels objektmodell. Brukere som ikke er kjent med Python eller Excels objektmodell kan trenge å investere tid i å lære disse konseptene før de utnytter PyXLLs evner fullt ut.
- Lisenskostnader: PyXLL er et kommersielt produkt, og avhengig av din bruk og krav, kan det være lisenskostnader forbundet med å bruke det. Kostnaden for å bruke PyXLL avhenger av faktorer som antall brukere, distribusjonsskala og lisensavtaler.
Bør du fortsatt bruke Excel-funksjoner?
Det kommer an på hva du ønsker å oppnå. Det er alltid fornuftig å bruke innebygde Excel-funksjoner når de er tilgjengelige. Men for mer komplekse oppgaver, som Excels innebygde funksjoner ikke kan håndtere, er PyXLL en utmerket løsning.
Pandas-biblioteket er et perfekt komplement for PyXLL med sine analytiske evner og sterke støtte for databehandling.