Lewati ke konten utama

Tutorial Python Excel: Panduan Lengkap dengan openpyxl

Pelajari cara membaca dan menulis file Excel di Python menggunakan openpyxl. Panduan ini mencakup rumus, bagan, pemformatan sel, dan manipulasi lembar kerja dengan latihan langsung
Diperbarui 5 Jun 2026  · 15 mnt baca

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 .xlsx apa pun dengan openpyxl.load_workbook('file.xlsx'); akses sheet melalui wb.active atau wb['SheetName']

  • Baca nilai sel dengan ws['A1'].value; iterasi baris dengan ws.iter_rows(values_only=True)

  • Tulis ke sel dengan ws['A1'] = 'value' dan simpan perubahan dengan wb.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:

Openpyxl install success

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:

Video games sales data

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:

Video games names column

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:

video games ranked

Sekarang kita tahu cara mengakses dan membaca data dari file Excel, mari pelajari cara menulis ke dalamnya menggunakan Openpyxl.

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:

Permission error

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

Video games data dengan kolom baru

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:

Jumlah penjualan di sel K2

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:

Jumlah penjualan dihitung

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):

Average sales row

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:

Worksheet untuk bagan batang

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:

Empat parameter untuk mendefinisikan nilai

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:

Parameter untuk kategori bagan batang

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:

Total sales by genre

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”:

Tabel untuk bagan batang berkelompok

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

Definisi nilai dan kategori untuk bagan batang berkelompok

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:

Keluaran bagan batang berkelompok

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:

Data jumlah penjualan

Mari tentukan rentang untuk nilai dan kategori bagan ini:

Nilai dan kategori untuk bagan garis bertumpuk

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:

Bagan garis bertumpuk

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:

large font data

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:

smaller font data

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:

change font color

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:

perubahan warna sel

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:

ubah warna sel

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:

conditional formatted

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 Excel

Apakah 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 Selvaraj's photo
Author
Natassha Selvaraj
LinkedIn
Twitter

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.

Topik

Pelajari lebih lanjut tentang Python dan Spreadsheet

Kursus

Pengantar Mengimpor Data di Python

3 Hr
336.4K
Pelajari cara mengimpor data ke dalam Python dari berbagai sumber, seperti Excel, SQL, SAS, dan langsung dari web.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak