Lompat ke konten utama
←

Otomasi Excel dengan Python

Pelajaran 12 dari 18

Banyak berkas dan banyak sheet

Laporan cabang yang bentuknya tidak seragam

Setelah pelajaran ini kamu bisa membaca kolom menurut nama judulnya, menormalkan ejaan judul, dan melewati baris kosong serta baris TOTAL.

±13 menitDiperiksa 2 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Laporan dari banyak orang jarang seragam. Satu cabang menaruh harga di kolom pertama, cabang lain menulis "JUMLAH" dengan huruf besar atau "Produk " dengan spasi di ujung, dan ada yang menambahkan baris TOTAL buatan sendiri di bawah. Kode yang membaca kolom menurut posisi akan salah tanpa pesan error: harga terbaca sebagai jumlah.

Jalan keluarnya adalah membaca kolom menurut nama judulnya. Ambil baris pertama, normalkan setiap judul dengan str(j).strip().lower(), lalu buat dict nama judul → posisi. Setelah itu setiap nilai diambil dengan baris[kolom["jumlah"]], di mana pun kolom itu berada.

baris = list(ws.iter_rows(values_only=True))
kolom = {str(j).strip().lower(): i for i, j in enumerate(baris[0])}
print(kolom)            # {'nama': 0, 'jam lembur': 1}
for b in baris[1:]:
    if b[kolom["nama"]] is None:
        continue
    print(b[kolom["nama"]], b[kolom["jam lembur"]])

Baris yang tidak berisi data sungguhan dilewati dengan dua pemeriksaan: kolom kunci (nama produk) kosong, atau isinya kata total dalam huruf apa pun. Membandingkan setelah .lower() menangkap TOTAL, Total, dan total sekaligus.

Pesan error yang akan kamu temui

KeyError: 'jumlah' berarti tidak ada judul yang setelah dinormalkan berbunyi persis "jumlah" — cetak dict kolom untuk melihat ejaan aslinya, misalnya "jml" atau "jumlah unit". AttributeError: 'NoneType' object has no attribute 'strip' berarti ada sel judul kosong; str(j) sebelum .strip() mencegahnya.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Kode kolom = {j: i for i, j in enumerate(judul)} lalu baris[kolom["jumlah"]] berhenti dengan KeyError: 'jumlah'. Saat dicetak, judulnya ('produk', 'Jumlah ', 'harga'). Perbaikan yang tepat?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 2 lagi