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

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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

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

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:

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

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

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:

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:

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

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:

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:

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 ExcelPython 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 , 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.