Kursus
Salah satu keterbatasan Excel adalah ketidakmampuannya menangani data dalam jumlah besar. Anda bisa mengalami masalah kinerja serius saat mencoba melakukan operasi kompleks pada banyak entri data di Excel, terutama jika rumus dan makro Anda tidak dioptimalkan untuk kinerja.
Excel juga bisa sangat memakan waktu jika Anda perlu melakukan tugas berulang. Misalnya, jika Anda perlu mereplikasi sebuah analisis pada beberapa file Excel setiap minggu, Anda harus membukanya secara manual dan menyalin-tempel rumus yang sama berulang kali.
Survei menunjukkan bahwa 93% pengguna Excel menganggap konsolidasi spreadsheet memakan waktu dan karyawan menghabiskan sekitar 12 jam setiap bulan hanya untuk menggabungkan berbagai file Excel.
Kelemahan ini dapat diatasi dengan mengotomatisasi alur kerja Excel menggunakan Python. Tugas seperti konsolidasi spreadsheet, pembersihan data, dan pemodelan prediktif dapat dilakukan dalam hitungan menit menggunakan skrip Python sederhana yang menulis ke file Excel.
Pengguna Excel juga dapat menyiapkan skrip otomatisasi Python yang berjalan terjadwal, menghilangkan pekerjaan manual mengulang tugas yang sama.
Dalam artikel ini, saya akan menunjukkan langkah demi langkah cara:
- Menggunakan openpyxl untuk membaca dan menulis file Excel menggunakan Python
- Membuat operasi aritmetika dan rumus Excel di Python
- Memanipulasi lembar kerja Excel menggunakan Python
- Membangun visualisasi di Python dan menyimpannya ke file Excel
- Memformat warna dan gaya sel Excel menggunakan Python
Ringkasan
-
Instal openpyxl dengan
pip install openpyxl -
Muat file
.xlsxapa pun denganopenpyxl.load_workbook('file.xlsx'); akses sheet melaluiwb.activeatauwb['SheetName'] -
Baca nilai sel dengan
ws['A1'].value; iterasi baris denganws.iter_rows(values_only=True) -
Tulis ke sel dengan
ws['A1'] = 'value'dan simpan perubahan denganwb.save('file.xlsx') -
Buat rumus Excel, bagan batang, bagan garis, dan pemformatan bersyarat sepenuhnya dari Python—tidak perlu membuka Excel
Prasyarat
Untuk mengikuti panduan ini, Anda memerlukan:
-
Python 3.8 atau yang lebih baru terpasang di komputer Anda
-
Dasar-dasar Python (variabel, loop, fungsi)
-
openpyxl terpasang (
pip install openpyxl) -
Penampil spreadsheet (Excel, Google Sheets, atau LibreOffice Calc) untuk memeriksa file keluaran
Unduh dataset penjualan video game yang digunakan dalam tutorial ini dari repositori GitHub ini.
Pengenalan Openpyxl
Openpyxl adalah pustaka Python yang memungkinkan pengguna membaca file Excel dan menulis ke dalamnya.
Kerangka kerja ini dapat membantu Anda menulis fungsi, memformat spreadsheet, membuat laporan, dan membangun bagan langsung di Python tanpa harus membuka aplikasi Excel.
Openpyxl juga memungkinkan Anda melakukan iterasi melalui lembar kerja dan menjalankan analisis yang sama pada beberapa dataset dalam satu kali proses.
Ini membuat otomatisasi pekerjaan Excel yang berulang menjadi mudah di sejumlah lembar kerja berapa pun.
Openpyxl vs. Pandas: Memilih Alat yang Tepat
Pertanyaan umum adalah apakah harus menggunakan openpyxl atau pandas untuk pekerjaan Excel. Jawabannya bergantung pada apa yang perlu Anda lakukan.
| Tugas | openpyxl | pandas |
|---|---|---|
| Membaca data dari Excel | Ya | Ya |
| Menulis data ke Excel | Ya | Ya (via to_excel()) |
| Memformat sel (font, warna, batas) | Ya | Tidak |
| Membuat bagan di dalam file Excel | Ya | Tidak |
| Menggunakan rumus Excel | Ya | Tidak |
| Analisis dan transformasi data | Terbatas | Ya |
| File sangat besar (>100k baris) | Gunakan read_only=True |
Lebih efisien memori secara default |
Gunakan openpyxl saat Anda perlu mengontrol tampilan dan struktur file Excel—pemformatan, bagan, rumus. Gunakan pandas saat Anda perlu memfilter, mengagregasi, atau mengubah bentuk data. Tutorial pandas Python kami membahas sisi analisis data secara mendalam.
Cara Menginstal Openpyxl
Untuk memasang openpyxl, buka terminal atau PowerShell Anda dan jalankan:
pip install openpyxl
Anda akan melihat pesan berikut yang menunjukkan bahwa paket berhasil dipasang:

Membaca File Excel di Python dengan Openpyxl
Kita akan menggunakan dataset Penjualan Video Game dari Kaggle dalam tutorial ini. Dataset ini telah dipraproses oleh tim kami untuk keperluan tutorial, dan Anda dapat mengunduh versi yang telah dimodifikasi dari tautan ini. Anda dapat mengimpor Excel ke Python dengan mengikuti proses di bawah ini:
Memuat workbook
Setelah mengunduh dataset, impor pustaka Openpyxl dan muat workbook ke Python:
import openpyxl
wb = openpyxl.load_workbook('videogamesales.xlsx')
Sekarang file Excel telah dimuat sebagai objek Python, Anda perlu memberi tahu pustaka lembar kerja mana yang akan diakses. Ada dua cara untuk melakukan ini:
Cara pertama adalah cukup memanggil lembar kerja aktif, yaitu lembar pertama dalam workbook, menggunakan baris kode berikut:
ws = wb.active
Atau, jika Anda mengetahui nama lembar kerja, Anda juga dapat mengaksesnya berdasarkan namanya. Kita akan menggunakan sheet “vgsales” di bagian tutorial ini:
ws = wb['vgsales']
Sekarang mari hitung jumlah baris dan kolom di lembar kerja ini:
print('Total number of rows: '+str(ws.max_row)+'. And total number of columns: '+str(ws.max_column))
Kode di atas akan menghasilkan keluaran berikut:
Total number of rows: 16328. And total number of columns: 10
Sekarang setelah kita mengetahui dimensi sheet, mari lanjutkan dan pelajari cara membaca data dari workbook.
Membaca file besar secara efisien
Untuk workbook dengan banyak baris, buka dalam mode baca-saja untuk menghindari memuat seluruh file ke memori:
import openpyxl
wb = openpyxl.load_workbook('videogamesales.xlsx', read_only=True)
ws = wb.active
for row in ws.iter_rows(values_only=True):
print(row)
Mode baca-saja melakukan streaming baris satu per satu alih-alih menahan seluruh workbook di RAM. Anda tidak dapat menulis kembali ke workbook yang dibuka dengan cara ini, jadi gunakan mode ini untuk pipeline yang dominan membaca pada dataset besar.
Membaca data dari sebuah sel
Berikut adalah tangkapan layar lembar aktif yang akan kita gunakan di bagian ini:

Untuk mengambil data dari sel tertentu dengan Openpyxl, Anda dapat mengetik nilai sel seperti ini:
print(f"The value in cell A1 is: {ws['A1'].value}")
Anda akan mendapatkan keluaran berikut:
The value in cell A1 is: Rank
Membaca data dari beberapa sel
Sekarang kita tahu cara membaca data dari sel tertentu, bagaimana jika kita ingin mencetak semua nilai sel di baris tertentu pada spreadsheet?
Untuk melakukan ini, Anda dapat menulis for loop sederhana untuk melakukan iterasi melalui semua nilai pada baris tertentu:
values = [ws.cell(row=1,column=i).value for i in range(1,ws.max_column+1)]
print(values)
Kode di atas akan mencetak semua nilai di baris pertama:
['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']
Selanjutnya, mari coba mencetak beberapa baris di kolom tertentu.
Kita akan membuat for loop untuk menampilkan sepuluh baris pertama di kolom “Name” sebagai sebuah daftar. Kita akan mendapatkan nama-nama yang disorot dalam kotak merah di bawah ini:

data=[ws.cell(row=i,column=2).value for i in range(2,12)]
print(data)
Kode di atas akan menghasilkan keluaran berikut:
['Wii Sports', 'Super Mario Bros.', 'Mario Kart Wii', 'Wii Sports Resort', 'Pokemon Red/Pokemon Blue', 'Tetris', 'New Super Mario Bros.', 'Wii Play', 'New Super Mario Bros. Wii', 'Duck Hunt']
Terakhir, mari cetak sepuluh baris pertama dalam rentang kolom di spreadsheet:
# reading data from a range of cells (from column 1 to 6)
my_list = list()
for value in ws.iter_rows(
min_row=1, max_row=11, min_col=1, max_col=6,
values_only=True):
my_list.append(value)
for ele1,ele2,ele3,ele4,ele5,ele6 in my_list:
(print ("{:<8}{:<35}{:<10}
{:<10}{:<15}{:<15}".format(ele1,ele2,ele3,ele4,ele5,ele6)))
Sepuluh baris pertama data di enam kolom pertama akan ditampilkan setelah Anda menjalankan kode di atas:

Menulis ke File Excel dengan Openpyxl
Sekarang kita tahu cara mengakses dan membaca data dari file Excel, mari pelajari cara menulis ke dalamnya menggunakan Openpyxl.
Menulis ke sebuah sel
Ada dua cara Anda dapat menulis ke file dengan Openpyxl.
Pertama, Anda dapat mengakses sel secara langsung menggunakan kuncinya:
ws['K1'] = 'Sum of Sales'
Cara alternatif adalah menentukan posisi baris dan kolom sel yang ingin Anda tulisi:
ws.cell(row=1, column=11, value = 'Sum of Sales')
Setiap kali Anda menulis ke file Excel dengan Openpyxl, Anda perlu menyimpan perubahan Anda dengan baris kode berikut atau perubahan tidak akan tercermin di lembar kerja:
wb.save('videogamesales.xlsx')
Jika workbook Anda terbuka saat Anda mencoba menyimpannya, Anda akan mengalami kesalahan izin berikut:

Pastikan untuk menutup file Excel sebelum menyimpan perubahan Anda. Anda kemudian dapat membukanya kembali untuk memastikan perubahan tercermin di lembar kerja Anda:

Perhatikan bahwa kolom baru bernama “Sum of Sales” telah dibuat di sel K1.
Membuat kolom baru
Sekarang mari tambahkan jumlah penjualan di setiap wilayah dan tulis ke kolom K.
Kita akan melakukan ini untuk data penjualan di baris pertama:
row_position = 2
col_position = 7
total_sales = ((ws.cell(row=row_position, column=col_position).value)+
(ws.cell(row=row_position, column=col_position+1).value)+
(ws.cell(row=row_position, column=col_position+2).value)+
(ws.cell(row=row_position, column=col_position+3).value))
ws.cell(row=2,column=11).value=total_sales
wb.save('videogamesales.xlsx')
Perhatikan bahwa total penjualan telah dihitung di sel K2 untuk gim pertama di lembar kerja:

Demikian pula, mari buat for loop untuk menjumlahkan nilai penjualan di setiap baris:
row_position = 1
for i in range(1, ws.max_row):
row_position += 1
NA_Sales = ws.cell(row=row_position, column=7).value
EU_Sales = ws.cell(row=row_position, column=8).value
JP_Sales = ws.cell(row=row_position, column=9).value
Other_Sales = ws.cell(row=row_position, column=10).value
total_sales = (NA_Sales + EU_Sales + JP_Sales + Other_Sales)
ws.cell(row=row_position, column=11).value = total_sales
wb.save("videogamesales.xlsx")
File Excel Anda sekarang seharusnya memiliki kolom baru yang mencerminkan total penjualan video game di semua wilayah:

Menambahkan baris baru
Untuk menambahkan baris baru ke workbook, cukup buat tuple dengan nilai yang ingin Anda sertakan dan tulis ke sheet:
new_row = (1,'The Legend of Zelda',1986,'Action','Nintendo',3.74,0.93,1.69,0.14,6.51,6.5)
ws.append(new_row)
wb.save('videogamesales.xlsx')
Anda dapat mengonfirmasi bahwa data ini telah ditambahkan dengan mencetak baris terakhir di workbook:
values = [ws.cell(row=ws.max_row,column=i).value for i in range(1,ws.max_column+1)]
print(values)
Keluaran berikut akan dihasilkan:
[1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]
Menghapus baris
Untuk menghapus baris baru yang baru saja kita buat, Anda dapat menjalankan baris kode berikut:
ws.delete_rows(ws.max_row, 1) # row number, number of rows to delete
wb.save('videogamesales.xlsx')
Argumen pertama dalam delete_rows() adalah nomor baris yang akan dihapus. Argumen kedua adalah jumlah baris yang akan dihapus.
Membuat Rumus Excel dengan Openpyxl
Anda dapat menggunakan Openpyxl untuk menulis rumus persis seperti yang Anda lakukan di Excel. Berikut beberapa contoh fungsi dasar yang dapat Anda buat menggunakan Openpyxl:
AVERAGE()
Mari buat kolom baru bernama “Average Sales” untuk menghitung rata-rata total penjualan video game di semua pasar:
ws['P1'] = 'Average Sales'
ws['P2'] = '= AVERAGE(K2:K16220)'
wb.save('videogamesales.xlsx')
Rata-rata penjualan di semua pasar kira-kira 0,19. Ini akan dicetak di sel P2 pada lembar kerja Anda.
COUNTA()
Fungsi “COUNTA” di Excel menghitung sel yang terisi dalam rentang tertentu. Mari gunakan ini untuk mencari jumlah rekaman antara E2 dan E16220:
ws['Q1'] = "Number of Populated Cells"
ws['Q2'] = '=COUNTA(E2:E16220)'
wb.save('videogamesales.xlsx')
Ada 16.219 rekaman dalam rentang ini yang memiliki informasi.
COUNTIF()
COUNTIF() adalah fungsi Excel yang umum digunakan untuk menghitung jumlah sel yang memenuhi kondisi tertentu. Mari gunakan ini untuk menghitung jumlah gim dalam dataset ini dengan genre “Sports”:
ws['R1'] = 'Number of Rows with Sports Genre'
ws['R2'] = '=COUNTIF(E2:E16220, "Sports")'
wb.save('videogamesales.xlsx')
Ada 2.296 gim olahraga dalam dataset.
SUMIF()
Sekarang, mari cari total “Sum of Sales” yang dihasilkan oleh gim olahraga menggunakan fungsi SUMIF:
ws['S1'] = 'Total Sports Sales'
ws['S2'] = '=SUMIF(E2:E16220, "Sports",K2:K16220)'
wb.save('videogamesales.xlsx')
Total jumlah penjualan yang dihasilkan oleh gim olahraga adalah 454.
CEILING()
Fungsi CEILING() di Excel membulatkan angka ke atas ke kelipatan tertentu terdekat. Mari bulatkan total jumlah penjualan yang dihasilkan oleh gim olahraga menggunakan fungsi ini:
ws['T1'] = 'Rounded Sum of Sports Sales'
ws['T2'] = '=CEILING(S2,25)'
wb.save('videogamesales.xlsx')
Kita telah membulatkan total penjualan yang dihasilkan oleh gim olahraga ke kelipatan 25 terdekat, yang menghasilkan 475.
Potongan kode di atas akan menghasilkan keluaran berikut di lembar Excel Anda (dari sel P1 hingga T2):

Untuk referensi cepat tentang rumus, operator, dan fungsi matematika Excel, lihat Excel Basics Cheat Sheet kami.
Bekerja dengan Sheet di Openpyxl
Sekarang kita tahu cara mengakses lembar kerja dan menulis ke dalamnya, mari pelajari bagaimana kita dapat memanipulasi, menghapus, dan menduplikasi lembar kerja menggunakan Openpyxl.
Mengubah nama sheet
Pertama, mari cetak nama lembar aktif yang saat ini kita gunakan dengan atribut title milik Openpyxl:
print(ws.title)
Keluaran berikut akan ditampilkan:
vgsales
Sekarang, mari ganti nama lembar kerja ini menggunakan baris kode berikut:
ws.title ='Video Game Sales Data'
wb.save('videogamesales.xlsx')
Nama lembar aktif Anda sekarang harus berubah menjadi “Video Game Sales Data.”
Membuat lembar kerja baru
Jalankan baris kode berikut untuk mencantumkan semua lembar kerja di workbook:
print(wb.sheetnames)
Anda akan melihat sebuah array yang mencantumkan nama semua lembar kerja di file:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
Sekarang mari buat lembar kerja kosong baru:
wb.create_sheet('Empty Sheet') # create an empty sheet
print(wb.sheetnames) # print sheet names again
wb.save('videogamesales.xlsx')
Perhatikan bahwa lembar baru bernama “Empty Sheet” sekarang telah dibuat:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', ‘Empty Sheet’]
Menghapus lembar kerja
Untuk menghapus lembar kerja menggunakan Openpyxl, cukup gunakan atribut remove dan cetak semua nama sheet lagi untuk mengonfirmasi bahwa lembar telah dihapus:
wb.remove(wb['Empty Sheet'])
print(wb.sheetnames)
wb.save('videogamesales.xlsx')
Perhatikan bahwa lembar “Empty Sheet” tidak lagi tersedia:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
Menduplikasi lembar kerja
Terakhir, jalankan baris kode ini untuk membuat salinan dari lembar kerja yang ada:
wb.copy_worksheet(wb['Video Game Sales Data'])
wb.save('vgsales_2.xlsx')
Saat mencetak semua nama sheet lagi, kita mendapatkan keluaran berikut:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Video Game Sales Data Copy']
Menambahkan Bagan ke File Excel dengan Openpyxl
Excel sering dianggap sebagai alat andalan untuk membuat visualisasi dan meringkas dataset. Pada bagian ini, kita akan belajar membangun bagan di Excel langsung dari Python menggunakan Openpyxl.
Bagan batang
Pertama, mari buat bagan batang sederhana yang menampilkan total penjualan video game menurut genre. Kita akan menggunakan lembar kerja “Total Sales by Genre” untuk melakukan ini:

Lembar kerja ini berisi pivot table di mana jumlah penjualan diagregasi menurut genre, seperti terlihat pada tangkapan layar di atas.
Mari akses lembar kerja ini sebelum kita mulai membuat bagan batang:
ws = wb['Total Sales by Genre'] # access the required worksheet
Sekarang, kita perlu memberi tahu Openpyxl nilai dan kategori yang ingin kita plot.
Nilai:
Nilai mencakup data “Sum of Sales” yang ingin kita plot. Kita perlu memberi tahu Openpyxl di mana menemukan data ini di file Excel dengan menyertakan rentang tempat nilai Anda dimulai dan berakhir.
Ada empat parameter di Openpyxl yang memungkinkan Anda menentukan lokasi nilai Anda:
-
Min_column: Kolom minimum yang berisi data -
Max_column: Kolom maksimum yang berisi data -
Min_row: Baris minimum yang berisi data -
Max_row: Baris maksimum yang berisi data
Berikut adalah gambar yang menunjukkan bagaimana Anda dapat mendefinisikan parameter ini:

Perhatikan bahwa baris minimum adalah baris pertama dan bukan baris kedua. Ini karena Openpyxl mulai menghitung dari baris yang memiliki nilai numerik di dalamnya.
# Values for plotting
from openpyxl.chart import Reference
values = Reference(ws, # worksheet object
min_col=2, # minimum column where your values begin
max_col=2, # maximum column where your values end
min_row=1, # minimum row you’d like to plot from
max_row=13) # maximum row you’d like to plot from
Kategori
Sekarang, kita perlu mendefinisikan parameter yang sama untuk kategori dalam bagan batang kita:

Berikut adalah kode yang dapat Anda gunakan untuk menetapkan parameter kategori bagan:
cats = Reference(ws,
min_col=1,
max_col=1,
min_row=2,
max_row=13)
Membuat bagan batang
Sekarang, kita dapat membuat objek bagan batang dan menyertakan nilai serta kategori menggunakan baris kode berikut:
from openpyxl.chart import BarChart
chart = BarChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)
Tetapkan judul bagan
Terakhir, Anda dapat menetapkan judul bagan dan memberi tahu Openpyxl di mana Anda ingin membuatnya di lembar Excel:
# set the title of the chart
chart.title = "Total Sales"
# set the title of the x-axis
chart.x_axis.title = "Genre"
# set the title of the y-axis
chart.y_axis.title = "Total Sales by Genre"
# the top-left corner of the chart
# is anchored to cell F2 .
ws.add_chart(chart,"D2")
# save the file
wb.save("videogamesales.xlsx")
Kemudian Anda dapat membuka file Excel dan menavigasi ke lembar kerja “Total Sales by Genre”. Anda akan melihat bagan yang terlihat seperti ini:

Bagan batang berkelompok
Sekarang, mari buat bagan batang berkelompok yang menampilkan total penjualan berdasarkan genre dan wilayah. Anda dapat menemukan data untuk bagan ini di lembar kerja “Breakdown of Sales by Genre”:

Serupa dengan saat kita membuat bagan batang, kita perlu menentukan rentang untuk nilai dan kategori:

Sekarang kita dapat mengakses lembar kerja dan menuliskannya dalam kode:
### Creating a Grouped Bar Chart with Openpyxl
ws = wb['Breakdown of Sales by Genre'] # access worksheet
# Data for plotting
values = Reference(ws,
min_col=2,
max_col=5,
min_row=1,
max_row=13)
cats = Reference(ws, min_col=1,
max_col=1,
min_row=2,
max_row=13)
Sekarang kita dapat membuat objek bagan batang, menyertakan nilai dan kategori di dalamnya, dan menetapkan parameter judul persis seperti sebelumnya:
# Create object of BarChart class
chart = BarChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)
# set the title of the chart
chart.title = "Sales Breakdown"
# set the title of the x-axis
chart.x_axis.title = "Genre"
# set the title of the y-axis
chart.y_axis.title = "Breakdown of Sales by Genre"
# the top-left corner of the chart is anchored to cell H2.
ws.add_chart(chart,"H2")
# save the file
wb.save("videogamesales.xlsx")
Setelah Anda membuka lembar kerja, bagan batang berkelompok yang terlihat seperti ini akan muncul:

Bagan garis bertumpuk
Terakhir, kita akan membuat bagan garis bertumpuk menggunakan data pada tab “Breakdown of Sales by Year.” Lembar kerja ini berisi data penjualan video game yang diuraikan berdasarkan tahun dan wilayah:

Mari tentukan rentang untuk nilai dan kategori bagan ini:

Sekarang kita dapat menuliskan nilai minimum dan maksimum ini dalam kode:
# Data for plotting
values = Reference(ws,
min_col=2,
max_col=6,
min_row=1,
max_row=40)
cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=40)
Terakhir, mari buat objek bagan garis dan tetapkan judul grafik, sumbu x, dan sumbu y:
# Create object of LineChart class
from openpyxl.chart import LineChart
chart = LineChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)
# set the title of the chart
chart.title = "Total Sales"
# set the title of the x-axis
chart.x_axis.title = "Year"
# set the title of the y-axis
chart.y_axis.title = "Total Sales by Year"
# the top-left corner of the chart is anchored to cell H2
ws.add_chart(chart,"H2")
# save the file
wb.save("videogamesales.xlsx")
Sebuah bagan garis bertumpuk yang terlihat seperti ini akan muncul di lembar kerja Anda:

Memformat Sel Menggunakan Openpyxl
Openpyxl memungkinkan pengguna memberi gaya pada sel di workbook Excel. Anda dapat mempercantik spreadsheet dengan mengubah ukuran font, warna latar belakang, dan batas sel langsung di Python.
Berikut beberapa cara menyesuaikan spreadsheet Excel Python Anda menggunakan Openpyxl:
Mengubah ukuran dan gaya font
Mari tingkatkan ukuran font di sel A1 dan tebalkan teks menggunakan baris kode berikut:
from openpyxl.styles import Font
ws = wb['Video Game Sales Data']
ws['A1'].font = Font(bold=True, size=12)
wb.save('videogamesales.xlsx')
Perhatikan bahwa teks di sel A1 sekarang sedikit lebih besar dan ditebalkan:

Sekarang, bagaimana jika kita ingin mengubah ukuran dan gaya font untuk semua header kolom di baris pertama?
Untuk melakukan ini, kita dapat menggunakan kode yang sama dan cukup membuat for loop untuk melakukan iterasi melalui semua kolom di baris pertama:
for row in ws.iter_rows(min_row=1, max_row=1):
for cell in row:
cell.font = Font(bold=True, size=12)
wb.save('videogamesales.xlsx')
Saat kita melakukan iterasi melalui [“1:1”], kita memberi tahu Openpyxl baris awal dan akhir untuk dilalui. Jika kita ingin melalui sepuluh baris pertama, misalnya, maka kita akan menentukan [“1:10”] sebagai gantinya.
Anda dapat membuka lembar Excel untuk memeriksa apakah perubahan telah tercermin:

Mengubah warna font
Anda dapat mengubah warna font di Openpyxl menggunakan kode hex:
from openpyxl.styles import colors
ws['A1'].font = Font(color = 'FF0000',bold=True, size=12) ## red
ws['A2'].font = Font(color = '0000FF') ## blue
wb.save('videogamesales.xlsx')
Setelah menyimpan workbook dan membukanya kembali, warna font di sel A1 dan A2 seharusnya berubah:
Mengubah warna latar belakang sel
Untuk mengubah warna latar belakang sel, Anda dapat menggunakan modul PatternFill milik Openpyxl:
## changing background color of a cell
from openpyxl.styles import PatternFill
ws["A1"].fill = PatternFill('solid', start_color="38e3ff") # light blue background color
wb.save('videogamesales.xlsx')
Perubahan berikut akan tercermin di lembar kerja Anda:

Menambahkan batas sel
Untuk menambahkan batas sel menggunakan Openpyxl, jalankan baris kode berikut:
## cell borders
from openpyxl.styles import Border, Side
my_border = Side(border_style="thin", color="000000")
ws["A1"].border = Border(
top=my_border, left=my_border, right=my_border, bottom=my_border
)
wb.save("videogamesales.xlsx")
Anda akan melihat batas yang terlihat seperti ini muncul di seluruh sel A1:

Pemformatan bersyarat
Pemformatan bersyarat adalah proses menyorot nilai tertentu dalam file Excel berdasarkan serangkaian kondisi. Ini memungkinkan pengguna memvisualisasikan data dengan lebih mudah dan lebih memahami nilai dalam lembar kerja mereka.
Mari gunakan Openpyxl untuk menyorot dengan warna hijau semua nilai penjualan video game yang lebih besar atau sama dengan 8:
from openpyxl.formatting.rule import CellIsRule
fill = PatternFill(
start_color='90EE90',
end_color='90EE90',fill_type='solid') # specify background color
ws.conditional_formatting.add(
'G2:K16594', CellIsRule(operator='greaterThan', formula=[8], fill=fill)) # include formatting rule
wb.save('videogamesales.xlsx')
Pada blok kode pertama, kita menentukan warna latar belakang sel yang ingin kita format. Dalam kasus ini, warnanya hijau muda.
Kemudian, kita membuat aturan pemformatan bersyarat yang menyatakan bahwa nilai apa pun yang lebih besar dari 8 harus disorot dengan warna isian yang kita tentukan. Kita juga menyatakan rentang sel tempat kita ingin menerapkan kondisi ini.
Setelah menjalankan kode di atas, semua nilai penjualan di atas 8 akan disorot seperti ini:

Pikiran akhir
Kita telah membahas banyak hal dalam tutorial ini, mulai dari dasar penggunaan pustaka Openpyxl hingga melakukan operasi lebih lanjut seperti membuat bagan dan memformat spreadsheet di Python.
Secara terpisah, Python dan Excel mencakup bagian berbeda dari alur kerja data. Excel menangani pelaporan dan analisis ad hoc; Python menangani pemodelan, otomatisasi, dan komputasi skala besar.
Keunggulan terbesar Excel adalah hampir semua orang menggunakannya. Dari pemangku kepentingan non-teknis hingga individu level awal, karyawan di semua tingkat memahami laporan yang disajikan dalam spreadsheet Excel.
Python, di sisi lain, digunakan untuk menganalisis dan membangun model pada data dalam jumlah besar. Ini dapat membantu tim mengotomatisasi tugas yang melelahkan dan meningkatkan efisiensi organisasi.
Ketika Excel dan Python digunakan bersama, Anda dapat mengotomatiskan berjam-jam pekerjaan berulang sambil menyajikan output dalam format yang sudah dipahami seluruh tim Anda. Untuk mengasah keterampilan ini, saya merekomendasikan kursus Python for Spreadsheet Users, atau lihat panduan kami tentang Python in Excel untuk menjalankan Python secara native di dalam spreadsheet Excel.
FAQs
Bagaimana Python menangani dataset Excel besar dengan lebih efisien dibanding Excel itu sendiri?
Python dapat menangani dataset besar dengan lebih efektif menggunakan pustaka seperti pandas dan numpy, yang dibangun untuk kinerja. Tidak seperti Excel, Python tidak bergantung pada antarmuka grafis, sehingga dapat memproses jutaan baris dalam memori dan melakukan operasi lanjutan tanpa risiko crash atau perlambatan signifikan.
Bisakah Python digunakan untuk bekerja dengan format non-Excel dan mengonversinya ke Excel?
Ya, Python dapat bekerja dengan berbagai format file, seperti CSV, JSON, dan basis data. Dengan pustaka seperti pandas, Anda dapat membaca format tersebut dan mengekspornya ke file Excel dengan mudah. Contoh:
import pandas as pd
data = pd.read_csv('data.csv') # Load CSV file
data.to_excel('data.xlsx', index=False) # Save as ExcelApakah memungkinkan menggabungkan data dari beberapa file Excel menggunakan Python?
Ya, Python memungkinkan Anda mengonsolidasikan data dari beberapa file Excel ke satu file atau lembar kerja. Ini dapat dilakukan menggunakan pustaka seperti openpyxl atau pandas. Misalnya, dengan pandas, Anda dapat membaca banyak file ke dalam dataframe, menggabungkannya (merge/concat), dan menyimpan hasilnya kembali ke file Excel:
import pandas as pd
df1 = pd.read_excel('file1.xlsx')
df2 = pd.read_excel('file2.xlsx')
combined = pd.concat([df1, df2])
combined.to_excel('combined.xlsx', index=False)Bagaimana cara membaca file Excel besar secara efisien dengan openpyxl?
Buka workbook dalam mode read-only (read_only=True) untuk mengurangi penggunaan memori. Mode baca-saja melakukan streaming data baris demi baris alih-alih memuat seluruh workbook ke memori. Mode ini dapat menangani file dengan ratusan ribu baris tanpa perlambatan, tetapi tidak mendukung penulisan kembali ke file.
Apa perbedaan antara openpyxl dan pandas untuk bekerja dengan Excel?
openpyxl bekerja langsung dengan format .xlsx milik Excel, memberi Anda kontrol atas pemformatan sel, bagan, rumus, dan struktur lembar kerja. pandas memperlakukan Excel sebagai sumber data dan memuatnya ke dalam DataFrame, yang lebih cocok untuk analisis dan transformasi data. Gunakan openpyxl saat Anda perlu memformat sel, membuat bagan, atau membangun file Excel dari nol. Gunakan pandas saat Anda perlu memfilter, mengagregasi, atau mengubah bentuk data dari file Excel.

Natassha adalah seorang konsultan data yang bekerja di persimpangan ilmu data dan pemasaran. Ia meyakini bahwa data, ketika digunakan dengan bijak, dapat menginspirasi pertumbuhan luar biasa bagi individu dan organisasi. Sebagai profesional data autodidak, Natassha suka menulis artikel yang membantu para calon praktisi ilmu data menembus industri. Artikel-artikelnya di blog pribadi, serta publikasi eksternal, meraih rata-rata 200 ribu tayangan per bulan.
