Jag tror att du har använt Microsoft Excel vid ett tillfälle. Det är mycket kraftfullt när det gäller att arbeta med kalkylblad, tabeller, diagram etc. Men vad har Python att göra med det?
Python är en spelväxlare när det gäller Excel-filer eftersom det kan automatisera skrämmande saker du kan stöta på i någon Excel-relaterad uppgift. Du kan till exempel behöva söka efter information i hundratals kalkylblad i företagets budgetar. Mycket skrämmande, eller hur? I den här handledningen visar jag hur Python kan användas enkelt för att arbeta med Excel-dokument.
Åh, oroa dig inte om du inte har Microsoft Excel installerad på din maskin. Du kan använda andra alternativ för att gå igenom denna handledning, till exempel LibreOffice Calc och OpenOffice Calc.
Så, låt oss börja!
OpenPyXL
är ett bibliotek som används för att läsa och skriva Excel 2010 xlsx / xlsm / xltx / XL ™
filer. Detta är det bibliotek vi ska använda i denna handledning för att arbeta med Excel-dokument.
Det första vi behöver göra för att kunna utnyttja det här biblioteket är att installera OpenPyXL
.
För att installera OpenPyXL
, vi kommer att använda pip, vilket är (baserat på Wikipedia):
Ett pakethanteringssystem som används för att installera och hantera mjukvarupaket som är skrivna i Python. Många paket finns i Python Package Index (PyPI).
Du kan följa stegen som nämns i Python Packaging User Guide för installation pip
, men om du har det python 2.7.9
och högre, eller python 3,4
och högre har du redan pip
!
OpenPyXL
Nu kan du enkelt installera genom att skriva följande kommando (i Mac OS X: s terminal):
pip installera openpyxl
Efter installationen OpenPyXL
, Vi är redo att börja arbeta med Excel-dokument. Den första normala uppgiften vi skulle utföra på ett Excel-dokument är att öppna det dokumentet. Gå vidare och ladda ner Excel-filen sample.xlsx för att följa med handledningen, eller du kan använda vilken Excel-fil du gillar.
Innan vi kan använda OpenPyXL
, vi måste importera
det, enligt följande:
importera openpyxl
Den metod vi behöver för att öppna Excel-dokumentet är load_workbook ()
. Om du undrar vad som menas med en arbetsbok, är det helt enkelt Excel-kalkylarkdokumentet. Skriptet som vi sålunda behöver öppna ett Excel-dokument är som följer:
importera openpyxl excel_document = openpyxl.load_workbook ('sample.xlsx')
Låt oss nu se typ
återvände från load_workbook ()
metod. Detta kan göras enligt följande:
utskriftstyp (excel_document)
Detta kommer att returnera följande:
Som vi kan se är objektet tillbaka arbetsbok
, av datatyp arbetsbok
. De arbetsbok
objekt här representerar Excel-filen.
Ark i Excel består av kolumner (med bokstäver från A, B, C, etc.) och rader (från 1, 2, 3, etc.). För att kontrollera vilka ark vi har i vårt Excel-dokument använder vi get_sheet_names ()
metod enligt följande:
excel_document.get_sheet_names ()
Om vi skriva ut
ovanstående kommando får vi följande:
[U'Sheet1' ]
Således visar att vi har ett ark, kallat Blad1
.
Om du har flera ark kan du komma åt ett specifikt ark med namnet med den här metoden: get_sheet_by_name ()
.
Nu när vi har lärt oss hur man öppnar en Excel-fil och får arket, låt oss se hur lätt det är att komma åt en cell i det arket. Allt du behöver göra är att hämta det arket och bestäm sedan cellens plats (koordinat). Låt oss säga att vi vill komma åt kolumnen en
rad 2
i det Excel-dokument vi har, det vill säga A2
. Detta kan genomföras enligt följande:
ark = excel_document.get_sheet_by_name ('Sheet1') utskrivningsark ['A2']. värde
I det här fallet får du följande värde returnerat: Abder
.
Vi kan också använda en rad-kolumnnotation. Till exempel, om vi vill komma åt cellen i rad 5
och kolumn 2
, vi skriver följande:
sheet.cell (rad = 5, kolumn = 2) .värde
Utgången i detta fall kommer att vara: programmerare
.
Om vi vill se objekttypen som representerar cellen kan vi skriva:
utskriftstyp (ark ['A2'])
eller:
skrivark.cell (rad = 5, kolumn = 2)
I det här fallet skulle du få följande utdata:
vilket innebär att objektet är av typ Cell
.
Vad händer om du var intresserad av att komma åt en rad celler i stället för bara en cell? Låt oss säga att vi vill komma åt cellerna från A1
till B3
, vilket ser ut så här i vårt Excel-dokument?
Detta kan göras med hjälp av följande skript:
multiple_cells = sheet ['A1': 'B3'] för rad i multipelceller: för cell i rad: skriv cell.value
I det här fallet får du följande utdata:
Namn Yrke Abder Student Bob Engineer
OpenPyXL
ger dig tillgång till alla rader och kolumner i ditt Excel-dokument, med hjälp av rader ()
och kolonner ()
metoder.
För att komma åt alla rader kan vi göra följande:
all_rows = sheet.rows skriv ut all_rows [:]
Observera att vi använde [:]
notation för att få tillgång till alla rader. Detta beror på att den returnerade objekttypen från hela dokumentet
är en tupel
.
Resultatet av ovanstående skript skulle vara följande:
((, | ), ( | , | ), ( | , | ), ( | , | ), ( | , | ), ( | , | ), ( | , | )) |
Å andra sidan, om vi vill komma åt alla kolonner, vi gör helt enkelt följande:
all_columns = sheet.columns skriv ut all_columns [:]
I så fall får du följande utmatning:
((, | , | , | , | , | , | ), ( | , | , | , | , | , | , | )) |
Det finns naturligtvis mer som du kan göra med Excel-dokument, vilket du kan se i OpenPyXL-dokumentationen.
Från denna handledning har vi noterat hur flexibelt det kan vara att arbeta med Excel-dokument med Python. Kom ihåg scenariot som nämns i början av handledningen? Värt att försöka som ett projekt!
Lär dig Python med vår kompletta handledning för pythonhandledning, oavsett om du bara har börjat eller du är en erfaren kodare som vill lära dig nya färdigheter.