Lompat ke konten utama
←

Otomasi Excel dengan Python

Pelajaran 11 dari 18

Banyak berkas dan banyak sheet

Menggabungkan berkas laporan cabang

Setelah pelajaran ini kamu bisa menemukan semua berkas cabang dengan pola nama, membacanya berurutan, dan menggabungkan barisnya ke satu sheet.

±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 cabang datang sebagai berkas terpisah dengan pola nama yang sama: cabang_bandung.xlsx, cabang_medan.xlsx, dan seterusnya. Path(".").glob("cabang_*.xlsx") dari modul pathlib menemukan semua berkas yang namanya cocok dengan pola, sehingga skrip tidak perlu diubah saat cabang baru bergabung. Tanda * mewakili teks apa pun.

Urutan hasil pencarian berkas tidak dijamin; dokumentasi pathlib menyebut isi folder dihasilkan dalam urutan acak. Bungkus dengan sorted() agar urutan gabungan sama setiap kali skrip dijalankan. Atribut p.name memberi nama berkas, dan p.stem memberi nama tanpa ekstensi, misalnya "cabang_medan"; method str.removeprefix("cabang_") menyisakan "medan".

from pathlib import Path
from openpyxl import load_workbook

semua = []
for berkas in sorted(Path(".").glob("absen_*.xlsx")):
    divisi = berkas.stem.removeprefix("absen_")
    ws = load_workbook(berkas).active
    for nama, hadir in ws.iter_rows(min_row=2, values_only=True):
        semua.append([divisi, nama, hadir])

Kolom asal (cabang atau divisi) ditambahkan di depan setiap baris, karena setelah digabung tidak ada lagi yang menandai baris itu datang dari mana. min_row=2 menjaga judul kolom setiap berkas tidak ikut masuk di tengah gabungan.

Kesalahan yang sering terjadi

Menyimpan hasil gabungan dengan nama yang cocok dengan pola, misalnya cabang_gabungan.xlsx, membuat skrip membaca hasilnya sendiri saat dijalankan berikutnya, dan semua angka menjadi dua kali lipat tanpa pesan error. Beri berkas hasil nama di luar pola. Bila glob tidak menemukan apa pun, perulangan tidak berjalan sama sekali dan hasilnya kosong — periksa folder dan polanya, termasuk huruf besar.

Latihan

0/3 lulus

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

Latihan 3 dari 3

Skrip penggabung memakai for p in Path(".").glob("cabang_*.xlsx") tanpa sorted(). Hasil di laptop rekan urutan cabangnya berbeda dengan hasil di laptopmu. Kenapa?

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