Materi
Workbook bisa diulang langsung: for ws in wb: memberi setiap sheet sesuai urutan tab, dan ws.title memberi namanya. Pola ini dipakai untuk workbook yang satu sheet-nya satu bulan, satu cabang, atau satu kelas, dengan susunan kolom yang sama di setiap sheet.
wb.create_sheet("Rekap", 0) membuat sheet baru di posisi pertama, sehingga ringkasan langsung terlihat saat berkas dibuka. Tanpa angka posisi, sheet baru ditaruh di belakang. Sheet yang tidak diperlukan dihapus dengan wb.remove(ws) atau del wb["Nama"].
wb = load_workbook("nilai.xlsx")
rata = {}
for ws in wb:
nilai = [n for (n,) in ws.iter_rows(min_row=2, min_col=2, max_col=2, values_only=True)]
rata[ws.title] = sum(nilai) / len(nilai)
print(rata) # {'7A': 81.5, '7B': 78.0}Urutan kerja menentukan hasil. Hitung ringkasan lebih dulu, baru buat sheet Rekap. Kalau Rekap dibuat sebelum perulangan, sheet itu ikut diulang dan isinya ikut dihitung sebagai bulan. Kalau urutan itu tidak bisa dihindari, lewati sheet yang judulnya Rekap di dalam perulangan.
Nama sheet kembar tidak memunculkan error
create_sheet("Rekap") pada workbook yang sudah punya sheet Rekap tidak berhenti dengan pesan apa pun: openpyxl memberi nama Rekap1. Skrip yang dijalankan dua kali pada berkas yang sama akan menumpuk Rekap, Rekap1, Rekap2. Periksa dulu dengan "Rekap" in wb.sheetnames dan hapus yang lama bila perlu.