Python: Menyatukan Isi File Excel dengan Pola Nama Tertentu
Saya mempunyai file excel dengan nama-nama yang mempunyai pola. Ya, sebenarnya itu adalah hasil generasi dari data yang ada dalam database.
batch_1_01_PELAYANAN_Perusahaan_A.xlsx
batch_1_01_PENYULUHAN_Perusahaan_A.xlsx
batch_1_01_PELAYANAN_Perusahaan_B.xlsx
batch_1_01_PENYULUHAN_Perusahaan_B.xlsx
batch_1_01_PELAYANAN_Perusahaan_C.xlsx
dst.
Saya ingin menyatukan isi file-file dalam PELAYANAN batch 1 ke dalam satu file Excel. Tentu syaratnya susunan kolom harus sama.
Karena saya ingin menyatukan file Excel, maka saya membutuhkan library openpyxl pada Python:
pip install openpyxl
Selanjutnya buat skrip seperti ini:
import os import re import pandas as pd # Folder tempat file disimpan folder_path = 'kelompok_data4' # Ganti dengan path ke folder Anda # Regex untuk mencocokkan nama file pattern = r'batch_1.*PENYULUHAN.*\.xlsx$' # List untuk menyimpan DataFrame dari setiap file yang cocok dataframes = [] # Loop melalui file dalam folder for file_name in os.listdir(folder_path): if re.match(pattern, file_name): file_path = os.path.join(folder_path, file_name) df = pd.read_excel(file_path, engine='openpyxl') dataframes.append(df) # Menggabungkan semua DataFrame menjadi satu if dataframes: combined_df = pd.concat(dataframes, ignore_index=True) # Menyimpan hasil gabungan ke file baru output_file = os.path.join(folder_path, 'combined_penyuluhan_batch_1.xlsx') combined_df.to_excel(output_file, index=False, engine='openpyxl') print(f"File gabungan telah disimpan sebagai {output_file}") else: print("Tidak ada file yang cocok ditemukan.")
Penjelasan:
folder_path
: Ganti dengan path ke folder tempat file Anda berada.pattern
: Regexr'batch_1.*PELAYANAN.*\.xlsx$'
mencocokkan file yang mengandung “batch_1”, “PELAYANAN”, dan berakhir dengan.xlsx
.os.listdir(folder_path)
: Mengambil daftar file dalam folder.re.match(pattern, file_name)
: Mencocokkan setiap nama file dengan pola regex.matched_files
: Menyimpan file yang cocok dengan pola regex.print(file)
: Menampilkan nama file yang cocok.