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

Openpyxl - czyli Excel w Python'ie (#2): Odczyt danych

Poziom trudności
2/5

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

  1. from openpyxl import load_workbook
  2. wb = load_workbook('excel_test.xlsx')
  3. 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:

Openpyxl   czyli Excel w Pythonie (#2) Odczyt danych image

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:

  1. sheet['A1'].value
  2. 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:

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

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

  1. 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:

  1. 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:

  1. cell_1 = sheet['A7']
  2. 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.

Dodaj komentarz