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
: Regex r'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.