Python Memindahkan Data Excel

Salah satu keunggulan scripting language seperti Python adalah kemudahan eksekusi sehingga tepat digunakan untuk menyelesaikan masalah sehari-hari. Dengan scripting language (baca: Python) kode relatif lebih pendek dan tidak membutuhkan waktu untuk mengkompilasi. Tapi kita simpan pembahasan itu untuk entah kapan, sekarang saatnya menyelesaikan real world problem.

Bagaimana memindahkan data dari kolom B ke kolom C pada baris 96 dan 108 dan entah baris berapa lagi, tanpa merubah data kolom C baris 100, 101 dan baris-baris lainnya.

Dengan fungsi Excel tentu sulit karena kita tidak tahu akan muncul di baris ke berapa saja, tidak mungkin pula copy and paste formula pada kolom C yang ada isinya. Cut and Paste, sama saja bunuh diri. Jangan worry, Python to the rescue.

Kita akan memindahkan data dari Kolom B ke C tanpa ‘mengganggu’ data pada kolom C, bukan hanya pada satu sheet, semuanya. Semua mua mua muanya sheets.

Bagusnya file Excel tersebut adalah keluaran dari sistem sehingga terpola dengan baik. Misalnya redaksi JUMLAH PER KEGIATAN adalah seragam, baik penggunaan huruf kapital maupun penulisan kata (jika diketik manual kita mungkin menemukan JUMLAH PER KEGIATAN di baris satu dan JMLAH PER KEGIATAN di baris lain). Pola lain yang membantu adalah di baris dengan kata JUMLAH PER KEGIATAN, yang akan dipindahkan, kolom C kosong sehingga kita tidak akan kehilangan data apapun saat memindahkan kata tersebut.

Contoh file Excel dapat di download di sini, pada file tersebut terdapat 2 sheets dengan pola yang sama, yang akan kita pindahkan data dari kolom B ke kolom C, entah di baris mana saja asal mengandung kata “JUMLAH PER KEGIATAN“. Buat sebuah file berisi kode Python dengan nama apapun, misal python_pindah_data.py dengan kode.

from openpyxl import load_workbook
from openpyxl import Workbook

wb = load_workbook('/home/aan/basangdata_excel/python_memindahkan_data_excel/contoh_pindah_kolom.xlsx', data_only = True)

for ws in wb.worksheets:
    max_row_b = ws.max_row + 1
    
    for row_b in range(2, max_row_b):
        if ws['B' + str(row_b)].value == 'JUMLAH PER KEGIATAN':
            ws['C' + str(row_b)].value = 'JUMLAH PER KEGIATAN'
            ws['B' + str(row_b)].value = ''

wb.save('/home/aan/basangdata_excel/python_memindahkan_data_excel/contoh_pindah_kolom_hasil.xlsx')

Anda dapat pula menggunakan file Notebook ini jika telah melakukan instalasi Jupyter Lab sebelumnya.

Jangan lupa mengubah lokasi file di baris wb = load_workbook dan wb.save agar sesuai dengan lokasi file Excel Anda.

Jalankan kode di atas dengan python python_pindah_data.py lalu Enter di Command Prompt/Console atau jika menggunakan Jupyter Notebook dapat pilih Menu Cell > Run All. Hasilnya seperti ini.


Mudah, bukan? Hanya beberapa baris kode dan pekerjaan berhari-hari dapat selesai.
Salam.

Leave a Reply

Your email address will not be published.