Openpyxl – czyli Excel w Python’ie #2: Odczyt danych

W tej części serii poświęconej bibliotece openpyxl (która pozwala na pracę z plikami Excel), zajmę się odczytem danych z istniejącego pliku. Możliwe, że będziesz tworzył pliki konfiguracyjne na podstawie Excel’i dostarczanych przez klienta, lub zaciągał dane bezpośrednio do testów. Umożliwi ci to w prosty sposób bibliotek openpyxl.

Openpyxl - czyli Excel w Python'ie

Openpyxl - czyli Excel w Python'ie


W tej części serii poświęconej bibliotece openpyxl (która pozwala na pracę z plikami Excel), zajmę się odczytem danych z istniejącego pliku. Możliwe, że będziesz tworzył pliki konfiguracyjne na podstawie Excel’i dostarczanych przez klienta, lub zaciągał dane bezpośrednio do testów. Umożliwi ci to w prosty sposób biblioteka openpyxl.

Odczyt pliku

Jak w poprzedniej części zacznijmy od zaimportowania biblioteki, zdefiniowania nowego skoroszytu (Workbook) i przypisaniem do niego aktywnego arkusza (Sheet). Jednak tym razem będziemy używać zewnętrznego, wcześniej przygotowanego pliku (excel_test.xlsx). Natomiast sam skoroszyt wczytamy za pomocą load_workbook

from openpyxl import load_workbook
 
wb = load_workbook('excel_test.xlsx')
 
sheet = wb.active

Na potrzeby artykułu, przygotowany arkusz nie będzie zawiły i rozbudowany – jak to zazwyczaj bywa w przypadku codziennej pracy. Myślę jednak , że będzie on wystarczającym przykładem jak dobrać się do danych w Excel’u:

Jak w przypadku zapisu, odczyt pojedynczej komórki może odbywać się na dwa sposoby. Wybierając trajektoria jak w Excel’u lub podając kolumnę i wiersz komórki, którą chcemy odczytać. Wartość jest dostępna pod zmienną value należącą do klasy sheet:

sheet['A1'].value
sheet.cell(row=1, column=1).value

Odczyt wielu komórek

Odczyt wielu komórek możemy rozwiązać za pomocą metody inter_rows. Poniższy kod pokazuje jak odczytać tabelę z poprzedniego przykładu. Jako argumenty podajemy minimalne i maksymalne wartości kolumn i wierszy, dzięki czemu wiemy, jaki obszar ma zostać odczytany:

for row in sheet.iter_rows(min_row=1, min_col=1, max_row=6, max_col=2):
    for cell in row:
        print(cell.value)

Często będziesz potrzebował również wybrać arkusz, na którym chcesz pracować, za pomocą nazwy:

sheet = wb.get_sheet_by_name("nazwa")

Ale skąd wiadomo, jaki wybrać. Rozwiązaniem tego może być wylisotwanie wszystkich dostępnych arkuszy za pomocą metody get_sheet_names:

print(wb.get_sheet_names())

Formuły w arkuszu

Uzupełnieniem zapisu opisanego w poprzedniej części serii „Openpyxl – czyli Excel w Python’ie” są formuły. Często może się zdarzyć, że będziemy musieli dodać do wybranej komórki formułę, wystarczy zmienić jej value i oczywiście zapisać do pliku, aby zobaczyć efekt:

cell_1 = sheet['A7']
cell_1.value = "=SUM(A4:A6)"

Tak przygotowany wgryziesz się w każdy możliwy arkusz, który zostanie ci dostarczony do ‚obrabiania’ i ‚wypluwania’ kolejnych, i kolejnych i kolejnych Excel’i.

close

Newsletter