Materi
Berkas .xlsx tersusun dari tiga lapis: workbook (seluruh berkas), worksheet (satu tab di bagian bawah Excel), dan sel. openpyxl memetakan ketiganya menjadi objek Workbook, Worksheet, dan Cell. Fungsi load_workbook("nama.xlsx") membuka berkas yang sudah ada dan mengembalikan objek Workbook. Atribut wb.sheetnames berisi daftar nama sheet sesuai urutan tab, dan wb["Nama"] mengambil satu sheet dengan namanya.
Sel diambil dengan dua cara. ws["B3"] memakai alamat seperti di Excel. ws.cell(row=3, column=2) memakai nomor, cocok dipakai di dalam perulangan karena nomor bisa dihitung. Isi selnya dibaca lewat .value. Baris dan kolom dihitung mulai 1, tidak mulai 0 seperti indeks list Python, sehingga kolom B adalah column=2.
from openpyxl import load_workbook
wb = load_workbook("inventaris.xlsx")
print(wb.sheetnames) # ['Ruang Rapat', 'Gudang']
gudang = wb["Gudang"]
print(gudang["A2"].value) # Kursi lipat
print(gudang.cell(row=2, column=2).value) # 24Kapan dipakai: ketika satu angka di posisi tetap — total, tanggal laporan, nama penyusun — harus diambil dari banyak berkas yang bentuknya sama. Membuka dua puluh berkas satu per satu untuk menyalin satu sel adalah pekerjaan yang paling cepat dibalas skrip.
Pesan error yang akan kamu temui
FileNotFoundError: [Errno 44] No such file or directory: 'stok.xlxs' berarti nama berkas salah ketik atau berkasnya ada di folder lain; angka 44 khas Python di browser, di laptop angkanya 2. KeyError: 'Worksheet januari does not exist.' berarti nama sheet tidak persis sama — huruf besar dan spasi ikut dicocokkan, jadi salin namanya dari wb.sheetnames. ValueError: Row or column values must be at least 1 muncul bila ws.cell diberi row=0, kebiasaan yang terbawa dari indeks list.