Jeg tror du har brukt Microsoft Excel ved en anledning. Det er veldig kraftig når det gjelder å jobbe med regneark, tabeller, diagrammer etc. Men hva har Python å gjøre med det?
Python er en spillveksler når det gjelder Excel-filer fordi den kan automatisere skremmende ting du kan støte på i noen Excel-relaterte oppgaver. For eksempel kan det hende du må være på utkikk etter informasjon i hundrevis av regneark i selskapets budsjetter. Veldig skremmende, er det ikke? I denne veiledningen vil jeg vise deg hvordan Python kan brukes lett til å jobbe med Excel-dokumenter.
Åh, ikke bekymre deg hvis du ikke har Microsoft Excel installert på maskinen din. Du kan bruke andre alternativer til å gå gjennom denne opplæringen, for eksempel LibreOffice Calc og OpenOffice Calc.
Så, la oss komme i gang!
OpenPyXL
er et bibliotek som brukes til å lese og skrive Excel 2010 xlsx / xlsm / xltx / xltm
filer. Dette er biblioteket vi skal bruke i denne veiledningen for å jobbe med Excel-dokumenter.
Det første vi må gjøre for å kunne benytte dette biblioteket er installasjon OpenPyXL
.
For å installere OpenPyXL
, vi skal bruke pip, som er (basert på Wikipedia):
Et pakkehåndteringssystem som brukes til å installere og administrere programvarepakker skrevet i Python. Mange pakker finnes i Python Package Index (PyPI).
Du kan følge trinnene som er nevnt i Python Packaging User Guide for installasjon pip
, men hvis du har det Python 2.7.9
og høyere, eller Python 3.4
og høyere, har du allerede pip
!
OpenPyXL
Nå kan du enkelt installere ved å skrive følgende kommando (i Mac OS Xs terminal):
pip installere openpyxl
Etter installasjon OpenPyXL
, Vi er klare til å begynne å jobbe med Excel-dokumenter. Den første vanlige oppgaven vi skulle utføre på et Excel-dokument er å åpen det dokumentet. Gå videre og last ned Excel-filen sample.xlsx for å følge med opplæringen, eller du kan bruke hvilken Excel-fil du liker.
Før vi kan bruke OpenPyXL
, vi må importere
det, som følger:
importere openpyxl
Metoden vi trenger for å åpne Excel-dokumentet er load_workbook ()
. Hvis du lurer på hva som menes med en arbeidsbok, er det bare Excel-regnearkdokumentet. Skriptet som vi dermed trenger for å åpne et Excel-dokument, er som følger:
importere openpyxl excel_document = openpyxl.load_workbook ('sample.xlsx')
La oss nå se type
returnert fra load_workbook ()
metode. Dette kan gjøres på følgende måte:
utskriftstype (excel_document)
Dette vil returnere følgende:
Som vi kan se, er gjenstanden returnert arbeidsbok
, av datatype arbeidsbok
. De arbeidsbok
objekt her representerer Excel-filen.
Ark i Excel består av kolonner (med bokstaver som starter fra A, B, C, etc.) og rader (fra 1, 2, 3, etc.). For å sjekke hvilke ark vi har i vårt Excel-dokument, bruker vi get_sheet_names ()
metode som følger:
excel_document.get_sheet_names ()
Hvis vi skrive ut
Kommandoen ovenfor får vi følgende:
[U'Sheet1' ]
Dermed viser vi at vi har ett ark, kalt Sheet1
.
Hvis du har flere ark, kan du få tilgang til et bestemt ark ved navn med denne metoden: get_sheet_by_name ()
.
Nå som vi har lært å åpne en Excel-fil og få arket, la oss se hvor lett det er å få tilgang til en celle i det aktuelle arket. Alt du trenger å gjøre er å hente arket, og deretter bestemme plasseringen (koordinaten) til cellen. La oss si at vi ønsker å få tilgang til kolonnen EN
rad 2
i Excel-dokumentet vi har, det er A2
. Dette kan implementeres som følger:
ark = excel_document.get_sheet_by_name ('Sheet1') utskriftsark ['A2']. verdi
I dette tilfellet vil du få følgende verdi returnert: Abder
.
Vi kan også bruke en rad-kolonne notasjon. For eksempel, hvis vi ønsker å få tilgang til cellen i rad 5
og kolonne 2
, vi skriver inn følgende:
sheet.cell (rad = 5, kolonne = 2) .value
Utgangen i dette tilfellet vil være: Programmerer
.
Hvis vi vil se objekttype som representerer cellen, kan vi skrive:
utskriftstype (ark ['A2'])
eller:
skriv ut ark.cell (rad = 5, kolonne = 2)
I dette tilfellet vil du få følgende utdata:
noe som betyr at objektet er av typen Celle
.
Hva om du var interessert i å få tilgang til en rekke celler i stedet for bare en celle? La oss si at vi vil ha tilgang til cellene fra A1
til B3
, som ser slik ut i vårt Excel-dokument?
Dette kan gjøres ved å bruke følgende skript:
multiple_cells = sheet ['A1': 'B3'] for rad i multiple_cells: for cellen i rad: skriv ut cellevalue
I dette tilfellet får du følgende utgang:
Navn Yrke Abder Student Bob Engineer
OpenPyXL
lar deg få tilgang til alle rader og kolonner i Excel-dokumentet ditt, ved hjelp av rader ()
og kolonner ()
metoder, henholdsvis.
For å få tilgang til alle rader, kan vi gjøre følgende:
all_rows = sheet.rows skriv ut all_rows [:]
Legg merke til at vi brukte [:]
notat for å få tilgang til alle rader. Dette skyldes at den returnerte objekttypen fra whole_document
er en tuppel
.
Utgangen av det ovennevnte skriptet ville være som følger:
((, | ), ( | , | ), ( | , | ), ( | , | ), ( | , | ), ( | , | ), ( | , | )) |
På den annen side, hvis vi ønsker å få tilgang til alle kolonner, vi gjør bare følgende:
all_columns = sheet.columns print all_columns [:]
I så fall får du følgende utgang:
((, | , | , | , | , | , | ), ( | , | , | , | , | , | , | )) |
Det er selvfølgelig mer som du kan gjøre med Excel-dokumenter, som du kan se i OpenPyXL-dokumentasjonen.
Fra denne opplæringen har vi lagt merke til hvor fleksibel det kan være å jobbe med Excel-dokumenter ved hjelp av Python. Husk scenariet nevnt i begynnelsen av opplæringen? Verdt å prøve som et prosjekt!
Lær Python med vår komplette pythonveiledning, enten du er bare i gang eller du er en erfaren coder som ønsker å lære nye ferdigheter..