Ana içeriğe atla

Python Excel: Örneklerle Bir Rehber

Python’da Excel dosyalarını nasıl okuyup içe aktaracağınızı, bu çalışma sayfalarına veri yazacağınızı ve bunu yapmak için en iyi paketleri nasıl bulacağınızı öğrenin.
Güncel 22 Nis 2026  · 15 dk. oku

Excel’in sınırlamalarından biri, çok büyük veri miktarlarını işleyememesidir. Özellikle formülleriniz ve makrolarınız performans için optimize edilmemişse, Excel’de çok sayıda veri girdisi üzerinde karmaşık işlemler yapmaya çalıştığınızda ciddi performans sorunlarıyla karşılaşabilirsiniz.

Ayrıca, tekrarlayan görevleri gerçekleştirmeniz gerektiğinde Excel oldukça zaman alıcı olabilir. Örneğin, her hafta birden fazla Excel dosyasında aynı analizi tekrarlamanız gerekiyorsa, bunları elle açıp aynı formülleri tekrar tekrar kopyalayıp yapıştırmanız gerekir.

Anketler, Excel kullanıcılarının %93’ünün çalışma sayfalarını birleştirmenin zaman alıcı olduğunu düşündüğünü ve çalışanların her ay yaklaşık 12 saatini farklı Excel dosyalarını birleştirmeye harcadığını gösteriyor.

Bu dezavantajlar, Excel iş akışlarını Python ile otomatikleştirerek çözülebilir. Çalışma sayfalarını birleştirme, veri temizleme ve tahminleme gibi görevler, Excel dosyasına yazan basit bir Python betiğiyle dakikalar içinde yapılabilir.

Excel kullanıcıları ayrıca Python’da bir zamanlayıcı oluşturarak betiği farklı zaman aralıklarında otomatik çalıştırabilir; böylece aynı görevi tekrar tekrar yapmak için gereken insan müdahalesini ciddi ölçüde azaltabilir.

Bu yazıda size adım adım şunları nasıl yapacağınızı göstereceğim:

  • Python kullanarak Excel dosyalarını okumak ve yazmak için Openpyxl adlı bir kütüphaneyi kullanma
  • Python’da aritmetik işlemler ve Excel formülleri oluşturma
  • Python kullanarak Excel çalışma sayfalarını yönetme
  • Python’da görselleştirmeler oluşturup bunları bir Excel dosyasına kaydetme
  • Python ile Excel hücre renklerini ve stillerini biçimlendirme

Openpyxl’e Giriş

Openpyxl, kullanıcıların Excel dosyalarını okumasını ve bu dosyalara yazmasını sağlayan bir Python kütüphanesidir. 

Bu çatı, Excel uygulamasını açmanıza gerek kalmadan doğrudan Python içinde fonksiyonlar yazmanıza, çalışma sayfalarını biçimlendirmenize, raporlar oluşturmanıza ve grafikler inşa etmenize yardımcı olur.

Ayrıca Openpyxl, kullanıcıların çalışma sayfalarını yinelemeli olarak dolaşmasına ve aynı anda birden çok veri kümesi üzerinde aynı analizi yapmasına olanak tanır. 

Bu da verimliliği artırır ve kullanıcıların yalnızca bir çalışma sayfasında analizi gerçekleştirmesi ve gerektiği kadar çoğaltması sayesinde Excel iş akışlarının otomasyonunu mümkün kılar.

Openpyxl Nasıl Kurulur

Openpyxl’i kurmak için komut isteminizi veya PowerShell’i açıp aşağıdaki komutu yazmanız yeterlidir:

$pip install openpyxl

Paketin başarıyla kurulduğunu belirten şu mesajı görmelisiniz:

Openpyxl insall success

Openpyxl ile Python’da Excel Dosyalarını Okuma

Bu eğitimde Kaggle’ın Video Game Sales veri kümesini kullanacağız. Bu veri kümesi, bu eğitim amacıyla ekibimiz tarafından önceden işlenmiştir ve şu bağlantıdan değiştirilmiş sürümünü indirebilirsiniz. Aşağıdaki süreci izleyerek Excel’i Python’a içe aktarabilirsiniz:

Çalışma kitabını yükleme

Veri kümesini indirdikten sonra Openpyxl kütüphanesini içe aktarın ve çalışma kitabını Python’a yükleyin:

import openpyxl 

wb = openpyxl.load_workbook('videogamesales.xlsx')

Excel dosyası artık bir Python nesnesi olarak yüklendiğine göre, kütüphaneye hangi çalışma sayfasına erişmesi gerektiğini söylemelisiniz. Bunu yapmak için iki yöntem vardır:

İlk yöntem, aşağıdaki kod satırını kullanarak çalışma kitabındaki ilk sayfa olan etkin çalışma sayfasını doğrudan çağırmaktır:

ws = wb.active

Alternatif olarak, çalışma sayfasının adını biliyorsanız adına göre de erişebilirsiniz. Bu bölümde “vgsales” sayfasını kullanacağız:

ws = wb['vgsales']

Şimdi bu çalışma sayfasındaki satır ve sütun sayısını sayalım:

print('Total number of rows: '+str(ws.max_row)+'. And total number of columns: '+str(ws.max_column))

Yukarıdaki kod şu çıktıyı üretmelidir:

Total number of rows: 16328. And total number of columns: 10

Sayfanın boyutlarını öğrendiğimize göre, çalışma kitabından veri okumayı öğrenmeye geçelim. 

Bir hücreden veri okuma

Bu bölümde çalışacağımız etkin sayfanın ekran görüntüsü şöyledir:

Video games sales data

Openpyxl ile belirli bir hücreden veri almak için hücre değerini şu şekilde yazdırabilirsiniz:

print(f"The value in cell A1 is: {ws['A1'].value}")

Aşağıdaki çıktıyı almalısınız:

The value in cell A1 is: Rank

Birden fazla hücreden veri okuma

Artık belirli bir hücreden nasıl veri okunacağını bildiğimize göre, çalışma sayfasındaki belirli bir satırdaki tüm hücre değerlerini yazdırmak istersek ne yaparız?

Bunu yapmak için, belirli bir satırdaki tüm değerlere yinelemeli olarak erişmek üzere basit bir `for döngüsü` yazabilirsiniz:

values = [ws.cell(row=1,column=i).value for i in range(1,ws.max_column+1)]
print(values)

Yukarıdaki kod, ilk satırdaki tüm değerleri yazdıracaktır:

['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']

Şimdi, belirli bir sütundaki birden fazla satırı yazdırmayı deneyelim.

Kırmızı kutuda vurgulanan adları liste olarak elde edecek şekilde “Name” sütunundaki ilk on satırı göstermek için bir for döngüsü oluşturacağız:

Video games names column

data=[ws.cell(row=i,column=2).value for i in range(2,12)]
print(data)

Yukarıdaki kod şu çıktıyı üretecektir:

['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']

Son olarak, çalışma sayfasındaki belirli bir sütun aralığında ilk on satırı yazdıralım:

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

Yukarıdaki kodu çalıştırdıktan sonra, ilk altı sütundaki verilerin ilk on satırı görüntülenecektir:

video games ranked

Openpyxl ile Excel Dosyalarına Yazma

Artık Excel dosyalarına nasıl erişip veri okuyacağımızı bildiğimize göre, Openpyxl kullanarak bu dosyalara nasıl yazacağımızı öğrenelim.

Bir hücreye yazma

Openpyxl ile bir dosyaya yazmanın iki yolu vardır.

İlk olarak, hücreye anahtarını kullanarak doğrudan erişebilirsiniz:

ws['K1'] = 'Sum of Sales'

Alternatif olarak, yazmak istediğiniz hücrenin satır ve sütun konumunu belirtebilirsiniz:

ws.cell(row=1, column=11, value = 'Sum of Sales')

Openpyxl ile bir Excel dosyasına her yazdığınızda, değişikliklerinizin çalışma sayfasına yansıması için aşağıdaki kod satırıyla kaydetmeniz gerekir; aksi halde yansıtılmaz:

wb.save('videogamesales.xlsx')

Kaydetmeye çalıştığınızda çalışma kitabı açıksa, aşağıdaki izin hatasıyla karşılaşırsınız:

Permission error

Değişiklikleri kaydetmeden önce Excel dosyasını kapattığınızdan emin olun. Ardından değişikliğin çalışma sayfanıza yansıtıldığını doğrulamak için dosyayı yeniden açabilirsiniz:

Video games data with new column

K1 hücresinde “Sum of Sales” adlı yeni bir sütunun oluşturulduğuna dikkat edin.

Yeni bir sütun oluşturma

Şimdi her bölgedeki satışların toplamını ekleyip K sütununa yazalım.

Bunu ilk satırdaki satış verileri için yapacağız:

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

Çalışma sayfasındaki ilk oyun için toplam satışların K2 hücresinde hesaplandığına dikkat edin:

Sum of sales in cell K2

Benzer şekilde, her satırdaki satış değerlerini toplamak için bir for döngüsü oluşturalım:

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

Excel dosyanız artık tüm bölgelerdeki video oyunlarının toplam satışlarını yansıtan yeni bir sütuna sahip olmalıdır:

Sum of sales calculated

Yeni satırlar ekleme

Çalışma kitabına yeni bir satır eklemek için, dahil etmek istediğiniz değerlerle bir demet (tuple) oluşturup sayfaya yazmanız yeterlidir:

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

Çalışma kitabındaki son satırı yazdırarak bu verinin eklendiğini doğrulayabilirsiniz:

values = [ws.cell(row=ws.max_row,column=i).value for i in range(1,ws.max_column+1)]
print(values)

Aşağıdaki çıktı üretilecektir:

[1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]

Satır silme

Az önce oluşturduğumuz yeni satırı silmek için aşağıdaki kod satırını çalıştırabilirsiniz:

ws.delete_rows(ws.max_row, 1) # row number, number of rows to delete

wb.save('videogamesales.xlsx')

delete_rows() fonksiyonundaki ilk argüman, silmek istediğiniz satır numarasıdır. İkinci argüman ise kaç satırın silineceğini belirtir.

Openpyxl ile Excel Formülleri Oluşturma

Openpyxl’i Excel’de olduğu gibi formüller yazmak için kullanabilirsiniz. Openpyxl kullanarak oluşturabileceğiniz bazı temel fonksiyonlara örnekler şunlardır:

AVERAGE()

Tüm pazarlardaki toplam video oyunu satışlarının ortalamasını hesaplamak için “Average Sales” adlı yeni bir sütun oluşturalım:

ws['P1'] = 'Average Sales'
ws['P2'] = '= AVERAGE(K2:K16220)'

wb.save('videogamesales.xlsx')

Tüm pazarlardaki ortalama satış yaklaşık 0,19’dur. Bu değer, çalışma sayfanızın P2 hücresinde yazdırılacaktır.

COUNTA()

Excel’deki “COUNTA” fonksiyonu, belirli bir aralıktaki dolu hücreleri sayar. E2 ile E16220 arasındaki kayıt sayısını bulmak için bunu kullanalım:

ws['Q1'] = "Number of Populated Cells" 
ws['Q2'] = '=COUNTA(E2:E16220)'

wb.save('videogamesales.xlsx')

Bu aralıkta bilgi içeren 16.219 kayıt vardır.

COUNTIF()

COUNTIF(), belirli bir koşulu sağlayan hücrelerin sayısını veren yaygın bir Excel fonksiyonudur. Bunu, bu veri kümesinde “Sports” türündeki oyunların sayısını hesaplamak için kullanalım:

ws['R1'] = 'Number of Rows with Sports Genre'
ws['R2'] = '=COUNTIF(E2:E16220, "Sports")'

wb.save('videogamesales.xlsx')

Veri kümesinde 2.296 spor oyunu bulunmaktadır.

SUMIF()

Şimdi, SUMIF fonksiyonunu kullanarak spor oyunlarının ürettiği toplam “Sum of Sales” değerini bulalım:

ws['S1'] = 'Total Sports Sales'
ws['S2'] = '=SUMIF(E2:E16220, "Sports",K2:K16220)'
 
wb.save('videogamesales.xlsx')

Spor oyunlarının ürettiği toplam satış sayısı 454’tür.

CEILING()

Excel’deki CEILING() fonksiyonu, bir sayıyı en yakın belirlenmiş katına yuvarlar. Spor oyunlarının ürettiği toplam satış miktarını bu fonksiyonla yukarı yuvarlayalım:

ws['T1'] = 'Rounded Sum of Sports Sales'
ws['T2'] = '=CEILING(S2,25)'

wb.save('videogamesales.xlsx')

Toplam satışları 25’in en yakın katına yuvarladık ve sonuç 475 oldu.

Yukarıdaki kod parçacıkları, Excel sayfanızda (P1’den T2’ye kadar olan hücrelerde) şu çıktıyı üretmelidir:

Average sales row

Excel formülleri, operatörler, matematik fonksiyonları ve koşullu hesaplama hakkında daha fazla bilgi edinmek için Excel Temelleri Cheat Sheet’imize bakabilirsiniz.

Openpyxl ile Sayfalarla Çalışma

Artık çalışma sayfalarına nasıl erişip onlara nasıl yazacağımızı bildiğimize göre, Openpyxl kullanarak bunları nasıl düzenleyip kaldırabileceğimizi ve çoğaltabileceğimizi öğrenelim.

Sayfa adlarını değiştirme

Önce, Openpyxl’in title özniteliğini kullanarak üzerinde çalıştığımız etkin sayfanın adını yazdıralım:

print(ws.title)

Aşağıdaki çıktı oluşturulacaktır:

vgsales

Şimdi, aşağıdaki kod satırlarını kullanarak bu çalışma sayfasını yeniden adlandıralım:

ws.title ='Video Game Sales Data'

wb.save('videogamesales.xlsx')

Etkin sayfanızın adı şimdi “Video Game Sales Data” olarak değişmiş olmalıdır.

Yeni bir çalışma sayfası oluşturma

Çalışma kitabındaki tüm çalışma sayfalarını listelemek için aşağıdaki kod satırını çalıştırın:

print(wb.sheetnames)

Dosyadaki tüm çalışma sayfalarının adlarını listeleyen bir dizi göreceksiniz:

['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']

Şimdi yeni bir boş çalışma sayfası oluşturalım:

wb.create_sheet('Empty Sheet') # create an empty sheet
print(wb.sheetnames) # print sheet names again

wb.save('videogamesales.xlsx')

“Empty Sheet” adlı yeni bir sayfanın oluşturulduğuna dikkat edin:

['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', ‘Empty Sheet’]

Bir çalışma sayfasını silme

Openpyxl kullanarak bir çalışma sayfasını silmek için remove özniteliğini kullanın ve silindiğini doğrulamak için tüm sayfa adlarını tekrar yazdırın:

wb.remove(wb['Empty Sheet'])
print(wb.sheetnames)

wb.save('videogamesales.xlsx')

“Empty Sheet” çalışma sayfasının artık mevcut olmadığına dikkat edin:

['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']

Bir çalışma sayfasını çoğaltma

Son olarak, mevcut bir çalışma sayfasının kopyasını oluşturmak için bu kod satırını çalıştırın:

wb.copy_worksheet(wb['Video Game Sales Data'])
wb.save('vgsales_2.xlsx')

Tüm sayfa adlarını tekrar yazdırdığımızda şu çıktıyı alırız:

['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Video Game Sales Data Copy']

Openpyxl ile Bir Excel Dosyasına Grafik Ekleme

Excel genellikle görselleştirme oluşturmak ve veri kümelerini özetlemek için başvurulan araç olarak görülür. Bu bölümde, Openpyxl kullanarak doğrudan Python’dan Excel’de grafik oluşturmayı öğreneceğiz.

Çubuk grafik

Önce, türlere göre video oyunu toplam satışlarını gösteren basit bir çubuk grafik oluşturalım. Bunu yapmak için “Total Sales by Genre” çalışma sayfasını kullanacağız:

Worksheet for bar chart

Bu çalışma sayfasında, yukarıdaki ekran görüntüsünde görüldüğü gibi satış toplamının türe göre kümelendiği bir pivot tablo bulunmaktadır.

Çubuk grafiği oluşturmaya başlamadan önce bu çalışma sayfasına erişelim:

ws = wb['Total Sales by Genre'] # access the required worksheet

Şimdi, Openpyxl’e görselleştirmek istediğimiz değerleri ve kategorileri söylememiz gerekiyor.

Değerler:

Değerler, çizmek istediğimiz “Sum of Sales” verilerini içerir. Openpyxl’e bu verileri Excel dosyasında nerede bulacağını, değerlerinizin başladığı ve bittiği aralığı dahil ederek belirtmemiz gerekir.

Openpyxl’de değerlerinizin konumunu belirtmenizi sağlayan dört parametre vardır:

  • Min_column: Veriyi içeren en küçük sütun

  • Max_column: Veriyi içeren en büyük sütun

  • Min_row: Veriyi içeren en küçük satır

  • Max_row: Veriyi içeren en büyük satır

Bu parametreleri nasıl tanımlayabileceğinizi gösteren bir görsel şurada:

Four parameters for defining values

En küçük satırın ikinci değil birinci satır olduğuna dikkat edin. Bunun nedeni, Openpyxl’in saymaya sayı içeren satırdan başlamasıdır.

# 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

Kategoriler

Şimdi, çubuk grafiğimizdeki kategoriler için de aynı parametreleri tanımlamamız gerekiyor:

Parameters for bar chart categories

Grafiğin kategorileri için parametreleri ayarlamak üzere kullanabileceğiniz kod şöyledir:

cats = Reference(ws, 
                 min_col=1, 
                 max_col=1, 
                 min_row=2, 
                 max_row=13)

Çubuk grafiğin oluşturulması

Artık çubuk grafik nesnesini oluşturabilir ve aşağıdaki kod satırlarını kullanarak değerlerimizi ve kategorilerimizi ekleyebiliriz:

from openpyxl.chart import BarChart

chart = BarChart()
chart.add_data(values, titles_from_data=True)
chart.set_categories(cats)

Grafik başlıklarını ayarlama

Son olarak, grafik başlıklarını ayarlayabilir ve Openpyxl’e Excel sayfasında grafiği nerede oluşturmak istediğinizi söyleyebilirsiniz:

# 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")

Ardından Excel dosyasını açıp “Total Sales by Genre” çalışma sayfasına gidin. Şuna benzeyen bir grafik görmelisiniz:

Total sales by genre

Gruplandırılmış çubuk grafik

Şimdi, türe ve bölgeye göre toplam satışları gösteren gruplandırılmış bir çubuk grafik oluşturalım. Bu grafik için verileri “Breakdown of Sales by Genre” çalışma sayfasında bulabilirsiniz:

Table for grouped bar chart

Çubuk grafiği nasıl oluşturduysak, değerler ve kategoriler için aralığı tanımlamamız gerekir:

Vales and categories definition for grouped bar chart

Şimdi çalışma sayfasına erişip bunu koda dökebiliriz:

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

Şimdi çubuk grafik nesnesini oluşturabilir, içine değerleri ve kategorileri ekleyebilir ve daha önce yaptığımız gibi başlık parametrelerini ayarlayabiliriz:

# 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")

Çalışma sayfasını açtığınızda şöyle bir gruplandırılmış çubuk grafik görmelisiniz:

Grouped bar chart output

Yığılmış çizgi grafik

Son olarak, “Breakdown of Sales by Year” sekmesindeki verileri kullanarak bir yığılmış çizgi grafik oluşturacağız. Bu çalışma sayfası, video oyunu satış verilerini yıl ve bölge bazında içermektedir:

Sum of sales data

Bu grafik için değerler ve kategoriler aralığını tanımlayalım:

Values and categories for stacked line chart

Şimdi bu minimum ve maksimum değerleri koda yazabiliriz:

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

Son olarak, çizgi grafik nesnesini oluşturalım ve grafiğin başlığını, x eksenini ve y eksenini ayarlayalım:

# 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")

Çalışma sayfanızda buna benzer bir yığılmış çizgi grafik görünmelidir:

Stacked line chart

Openpyxl Kullanarak Hücreleri Biçimlendirme

Openpyxl, kullanıcıların Excel çalışma kitaplarındaki hücreleri stillendirmesine olanak tanır. Yazı tipi boyutlarını, arka plan renklerini ve hücre kenarlıklarını doğrudan Python’da değiştirerek çalışma sayfanızı daha hoş görünümlü hale getirebilirsiniz.

Openpyxl ile Python Excel çalışma sayfanızı özelleştirmenin bazı yolları şunlardır:

Yazı tipi boyutlarını ve stillerini değiştirme

Aşağıdaki kod satırlarını kullanarak A1 hücresindeki yazı tipi boyutunu artırıp metni kalınlaştıralım:

from openpyxl.styles import Font

ws = wb['Video Game Sales Data']
ws['A1'].font = Font(bold=True, size=12)

wb.save('videogamesales.xlsx')

A1 hücresindeki metnin artık biraz daha büyük ve kalın olduğuna dikkat edin:

large font data

Peki, ilk satırdaki tüm sütun başlıklarının yazı tipi boyutunu ve stilini değiştirmek istersek ne olur?

Bunu yapmak için aynı kodu kullanıp yalnızca ilk satırdaki tüm sütunlarda yineleme yapmak üzere bir for döngüsü oluşturabiliriz:

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

[“1:1”] aralığında yineleme yaptığımızda, Openpyxl’e döngüye alınacak başlangıç ve bitiş satırlarını söylüyoruz. Örneğin ilk on satırda döngü yapmak isteseydik, bunun yerine [“1:10”] belirtirdik.

Değişikliklerin yansıtılıp yansıtılmadığını kontrol etmek için Excel sayfasını açabilirsiniz:

smaller font data

Yazı tipi rengini değiştirme

Openpyxl’de yazı tipi renklerini hex kodlarıyla değiştirebilirsiniz:

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

Çalışma kitabını kaydedip yeniden açtıktan sonra A1 ve A2 hücrelerindeki yazı tipi renkleri değişmiş olmalıdır:

change font color

Hücre arka plan rengini değiştirme

Bir hücrenin arka plan rengini değiştirmek için Openpyxl’in PatternFill modülünü kullanabilirsiniz:

## 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')

Aşağıdaki değişiklik çalışma sayfanızda yansıtılmalıdır:

cell color change

Hücre kenarlıkları ekleme

Openpyxl kullanarak bir hücre kenarlığı eklemek için aşağıdaki kod satırlarını çalıştırın:

## 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")

A1 hücresinin etrafında buna benzer bir kenarlık görünmelidir:

change cell color

Koşullu biçimlendirme

Koşullu biçimlendirme, bir Excel dosyasında belirli koşullara göre belirli değerleri vurgulama işlemidir. Kullanıcıların verileri daha kolay görselleştirmesine ve çalışma sayfalarındaki değerleri daha iyi anlamasına olanak tanır.

Openpyxl’i kullanarak 8’den büyük veya 8’e eşit olan tüm video oyunu satış değerlerini yeşil renkle vurgulayalım:

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

İlk kod bloğunda, biçimlendirmek istediğimiz hücrelerin arka plan rengini belirtiyoruz. Bu örnekte renk açık yeşildir.

Ardından, 8’den büyük olan her değerin belirttiğimiz dolgu rengiyle vurgulanacağını ifade eden bir koşullu biçimlendirme kuralı oluşturuyoruz. Ayrıca bu koşulu uygulamak istediğimiz hücre aralığını da belirtiyoruz.

Yukarıdaki kodu çalıştırdıktan sonra, 8’in üzerindeki tüm satış değerleri şu şekilde vurgulanmalıdır:

conditional formatted

Sonuç

Bu eğitimde, Openpyxl kütüphanesini kullanmanın temellerinden Python’da grafik oluşturma ve çalışma sayfalarını biçimlendirme gibi daha ileri işlemlere kadar pek çok konuyu ele aldık.

Tek başlarına Python ve Excel, tahminleme modelleri kurmak, analitik raporlar üretmek ve matematiksel hesaplamalar yapmak için kullanılan güçlü veri işleme araçlarıdır.

Excel’in en büyük avantajı, neredeyse herkes tarafından kullanılmasıdır. Teknik olmayan paydaşlardan giriş seviyesindeki kişilere kadar, tüm seviyelerdeki çalışanlar bir Excel çalışma sayfasında sunulan raporları anlar. 

Öte yandan Python, büyük miktarda veriyi analiz etmek ve modeller oluşturmak için kullanılır. Ekiplerin zahmetli görevleri otomatikleştirmesine ve kurumsal verimliliği artırmasına yardımcı olabilir.

Excel ve Python birlikte kullanıldığında, kuruluşun herkesin aşina olduğu bir arayüzde kalmasını sağlarken şirket iş akışlarından saatler kazandırabilir.

SSS

Python, büyük Excel veri kümelerini Excel’in kendisinden daha verimli nasıl işler?

Python, performans için optimize edilmiş pandas ve numpy gibi kütüphanelerden yararlanarak büyük veri kümelerini daha etkili bir şekilde işleyebilir. Excel’in aksine Python grafiksel bir arayüze bağlı değildir; bu da milyonlarca satırı bellekte işleyip gelişmiş işlemleri çökme veya ciddi yavaşlama riski olmadan gerçekleştirmesini sağlar.

Python, Excel dışındaki dosya formatlarıyla çalışıp bunları Excel’e dönüştürebilir mi?

Evet, Python CSV, JSON ve veritabanları gibi çeşitli dosya biçimleriyle çalışabilir. pandas gibi kütüphaneleri kullanarak bu biçimleri okuyabilir ve kolayca Excel dosyalarına aktarabilirsiniz. Örneğin:

import pandas as pd
data = pd.read_csv('data.csv')  # Load CSV file
data.to_excel('data.xlsx', index=False)  # Save as Excel

Python kullanarak birden fazla Excel dosyasındaki verileri birleştirmek mümkün mü?

Evet, Python birden fazla Excel dosyasındaki verileri tek bir dosyada veya çalışma sayfasında birleştirmenize olanak tanır. Bunu openpyxl veya pandas gibi kütüphanelerle yapabilirsiniz. Örneğin, pandas ile birden çok dosyayı veri çerçevelerine okuyup birleştirebilir veya bir araya getirebilir ve sonucu yeniden bir Excel dosyasına kaydedebilirsiniz:

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)

Natassha Selvaraj's photo
Author
Natassha Selvaraj
LinkedIn
Twitter

Natassha , veri bilimi ile pazarlamanın kesişiminde çalışan bir veri danışmanıdır. Verilerin, akıllıca kullanıldığında, bireyler ve kurumlar için olağanüstü bir büyüme ilhamı olabileceğine inanır. Kendi kendini yetiştirmiş bir veri profesyoneli olarak Natassha , veri bilimi alanına girmek isteyenlere yardımcı olacak makaleler yazmayı sever. Kişisel blogundaki ve harici yayınlardaki makaleleri aylık ortalama 200 bin görüntülenme almaktadır.

Konular

Python ve Elektronik Tablolar hakkında daha fazla bilgi edinin

Kurs

Python'da Veri Aktarmaya Giriş

3 sa
334.2K
Excel, SQL, SAS gibi çeşitli kaynaklardan ve doğrudan web'den Python'a veri aktarmayı öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow