openpyxl: Excel Görevlerini Python ile Otomatikleştirin
openpyxl kullanarak Excel dosyalarını okuma, yazma ve biçimlendirmeyi öğrenin. Modern Excel formatları (.xlsx) ve gelişmiş özelliklerle çalışma için pratik örnekler keşfedin.
openpyxl, Excel 2007 ile tanıtılan modern XML tabanlı formatlardaki (.xlsx, .xlsm) Excel dosyalarını okumanıza ve yazmanıza olanak tanıyan verimli bir Python kütüphanesidir; Excel 2010'dan itibaren gelişmiş özelliklere tam destek sunar. Başlangıçta PHPExcel'in Python uyarlaması olarak geliştirildi ve aktif bir geliştirici topluluğu tarafından bakım görmeye devam ediyor. Kütüphane, veri otomasyonu, raporlama ve biçimlendirme iş akışlarında öne çıkar; Excel dosyalarıyla çalışması gereken ancak sistemlerinde Excel yüklü olmayan kullanıcılar için özellikle faydalıdır.
Birçok kuruluş, finansal raporları otomatikleştirmek, veritabanı dışa aktarımlarından grafikler oluşturmak ve pazarlama raporlarına formüller ile biçimlendirme uygulamak için openpyxl kullanır. Bu kütüphane, tamamıyla Python kodu aracılığıyla Excel dosyaları üzerinde ince ayar kontrolü sunar.
openpyxl Nedir?
openpyxl, özellikle Excel 2010+ formatlarına yerel destek sağlamak üzere tasarlanmıştır. Kütüphane birkaç dosya formatıyla çalışır:
.xlsx - Excel çalışma kitabı
.xlsm - Makrolu Excel çalışma kitabı
.xltx - Excel şablonu
.xltm - Makrolu Excel şablonu
openpyxl'in en büyük avantajlarından biri, bilgisayarınıza Excel'in kurulu olmasını gerektirmemesidir. Bu da onu sunucu ortamları, otomatik raporlama sistemleri ve veri işleme hatları için ideal kılar. pandas dahil olmak üzere çeşitli Python kütüphaneleri, Excel arayüzü olarak openpyxl'i kullanır; bu da onun güvenilirliğini ve işlevselliğini gösterir.
İşte bir Excel dosyasından veri okumayı gösteren pratik bir örnek:
Bir çalışma kitabını yükleyin ve keşfedin
from openpyxl import load_workbook
# Load the workbook - use read_only=True for large files
wb = load_workbook('sample.xlsx', read_only=False, data_only=False)# data_only=True reads values instead of formulasAltyapı:
İsteğe bağlı parametreler, çalışma kitabının nasıl yükleneceğini kontrol eder:
read_only=True büyük dosyalar için performansı artırır ancak düzenleme yeteneklerini sınırlar
data_only=True formüller yerine hesaplanan değerleri döndürür
Veriler arasında yineleme yapın
Birden çok hücreyi verimli bir şekilde işlemek için yineleme yöntemlerini kullanın:
# Iterate through rowsfor row in sheet.iter_rows(min_row=1, max_row=5, values_only=True):print(row)# Returns a tuple of values# Iterate through columnsfor column in sheet.iter_cols(min_col=1, max_col=3, values_only=True):print(column)# Returns a tuple of values# Access a range of cells
cell_range = sheet["A1:C5"]for row in cell_range:for cell in row:print(cell.value)Altyapı:
Python veri yapılarına dönüştürün
Excel verilerini Python veri yapılarına kolayca dönüştürebilirsiniz:
# Convert worksheet data to a list of dictionariesdefsheet_to_dict(sheet):
data =[]
headers =[cell.value for cell in sheet[1]]# First row as headersfor row in sheet.iter_rows(min_row=2, values_only=True):
row_data ={}for key, value inzip(headers, row):
row_data[key]= value
data.append(row_data)return data
# Example usage
data_dict = sheet_to_dict(sheet)print(data_dict)Altyapı:
openpyxl ile Excel Dosyalarına Yazma
openpyxl ile Excel dosyaları oluşturmak ve değiştirmek de aynı derecede kolaydır.
Bir çalışma kitabı oluşturun ve temel veriler yazın
from openpyxl import Workbook
# Create a new workbook
wb = Workbook()
sheet = wb.active
# Rename the sheet
sheet.title ="Data"# Write values to cells
sheet["A1"]="Name"
sheet["B1"]="Age"
sheet["C1"]="City"# Add data
data =[["Alice",25,"New York"],["Bob",30,"San Francisco"],["Charlie",35,"Chicago"]]for row_idx, row_data inenumerate(data, start=2):for col_idx, cell_value inenumerate(row_data, start=1):
sheet.cell(row=row_idx, column=col_idx, value=cell_value)# Save the workbook
wb.save("new_workbook.xlsx")Altyapı:
Mevcut Excel dosyalarını değiştirin
from openpyxl import load_workbook
# Load an existing workbook
wb = load_workbook("existing_file.xlsx")
sheet = wb.active
# Modify cell values
sheet["D1"]="Updated Data"
sheet.cell(row=5, column=2).value =42# Save to a new file (to preserve the original)
wb.save("modified_file.xlsx")Altyapı:
Verileri dinamik olarak ekleyin
.append() yöntemi yeni satırlar eklemeyi kolaylaştırır:
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
# Add headers
sheet.append(["Date","Product","Quantity","Price"])# Add multiple rows of data
sales_data =[["2025-04-01","Laptop",5,1200],["2025-04-01","Mouse",10,25],["2025-04-02","Monitor",3,350]]for row in sales_data:
sheet.append(row)
wb.save("sales_report.xlsx")Altyapı:
Excel'de Biçimlendirme ve Stil
openpyxl, hücre biçimlendirme ve stillendirme için kapsamlı seçenekler sunar.
Yazı tipleri, kenarlıklar ve hizalama ekleyin
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, Border, Side, PatternFill, NamedStyle
wb = Workbook()
sheet = wb.active
# Create a header style
header_style = NamedStyle(name="header_style")
header_style.font = Font(bold=True, size=12, color="FFFFFF")
header_style.fill = PatternFill(fill_type="solid", start_color="366092")
header_style.alignment = Alignment(horizontal="center", vertical="center")
header_style.border = Border(
bottom=Side(border_style="medium", color="000000"),
left=Side(border_style="thin"),
right=Side(border_style="thin"),
top=Side(border_style="thin"))# Add the style to the workbook
wb.add_named_style(header_style)# Apply the style to header row
headers =["ID","Product","Category","Price"]for col_idx, header inenumerate(headers, start=1):
cell = sheet.cell(row=1, column=col_idx, value=header)
cell.style ="header_style"# Basic styling without named styles
sheet["A2"].font = Font(bold=True, italic=True)
sheet["A3"].alignment = Alignment(horizontal="center")
sheet["A4"].border = Border(bottom=Side(border_style="thin"))
wb.save("styled_workbook.xlsx")Altyapı:
Koşullu biçimlendirme
Koşullu biçimlendirme, hücre değerlerine göre stiller uygulamanıza olanak tanır:
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.formatting.rule import Rule, ColorScaleRule
wb = Workbook()
sheet = wb.active
# Add sample datafor row inrange(1,11):for col inrange(1,5):
sheet.cell(row=row, column=col, value=(row-1)*4+ col)# Add color scale (green to red gradient)
color_scale = ColorScaleRule(
start_type="min", start_color="63BE7B",# Green
mid_type="percentile", mid_value=50, mid_color="FFEB84",# Yellow
end_type="max", end_color="F8696B"# Red)
sheet.conditional_formatting.add("A1:D10", color_scale)# Add a rule for values less than 5
red_text = Font(color="FF0000")
red_fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid")
dxf = DifferentialStyle(font=red_text, fill=red_fill)
rule = Rule(type="cellIs", operator="lessThan", formula=["5"], dxf=dxf)
sheet.conditional_formatting.add("A1:D10", rule)
wb.save("conditional_format.xlsx")Altyapı:
Gelişmiş Özellikler
openpyxl, karmaşık elektronik tablo görevlerine yardımcı olan birçok gelişmiş Excel özelliğini destekler.
Not: load_workbook() kullanıldığında formüller openpyxl tarafından otomatik olarak hesaplanmaz. Hesaplanan değerleri görmek için load_workbook(“file.xlsx”, data_only=True) kullanın.
Grafik ekleme
openpyxl çeşitli grafik türleri oluşturabilir:
from openpyxl import Workbook
from openpyxl.chart import BarChart, LineChart, Reference
wb = Workbook()
sheet = wb.active
# Add data
months =["Jan","Feb","Mar","Apr","May"]
values =[30,45,37,50,62]for i,(month, value)inenumerate(zip(months, values), start=1):
sheet.cell(row=i, column=1, value=month)
sheet.cell(row=i, column=2, value=value)# Create a bar chart
bar_chart = BarChart()
bar_chart.title ="Monthly Sales"
bar_chart.x_axis.title ="Month"
bar_chart.y_axis.title ="Sales"# Define the data range
data = Reference(sheet, min_col=2, min_row=1, max_row=5)
categories = Reference(sheet, min_col=1, min_row=1, max_row=5)# Add the data to the chart
bar_chart.add_data(data)
bar_chart.set_categories(categories)# Add the chart to the worksheet
sheet.add_chart(bar_chart,"D1")# Create a line chart on the same data
line_chart = LineChart()
line_chart.title ="Monthly Sales Trend"
line_chart.add_data(data)
line_chart.set_categories(categories)
sheet.add_chart(line_chart,"D15")
wb.save("charts.xlsx")Altyapı:
Görsel ekleme
from openpyxl import Workbook
from openpyxl.drawing.image import Image
wb = Workbook()
sheet = wb.active
# Add an image
img = Image("logo.png")# Resize the image (optional)
img.width =150
img.height =75# Add the image to cell A1
sheet.add_image(img,"A1")
wb.save("with_image.xlsx")Altyapı:
Not: Görsellerle çalışmak için Pillow kütüphanesinin kurulu olması gerekir: pip install pillow
Sayfa, Satır ve Sütun Yönetimi
openpyxl, Excel dosyalarınızın yapısını yönetmek için işlevler sağlar:
Sayfa oluşturma ve kaldırma
from openpyxl import Workbook
wb = Workbook()# Create new sheets
wb.create_sheet("Data")
wb.create_sheet("Summary",0)# Add at the beginning# Remove a sheet
wb.remove(wb["Sheet"])# Remove the default sheetprint(wb.sheetnames)# ['Summary', 'Data']
wb.save("multiple_sheets.xlsx")Altyapı:
from openpyxl import Workbook
wb = Workbook()
source = wb.active
source.title ="Original"# Add some data to copy
source["A1"]="Test Data"# Create a copy
wb.copy_worksheet(source)# The copied sheet will have "Copy of Original" name
wb.save("copied_sheet.xlsx")Altyapı:
Satır ve sütun ekleme/silme
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
# Add some datafor i inrange(1,6):for j inrange(1,4):
sheet.cell(row=i, column=j, value=f"R{i}C{j}")# Insert a row at position 2
sheet.insert_rows(2)# Insert multiple rows
sheet.insert_rows(5,3)# Insert 3 rows at position 5# Insert a column at position 2
sheet.insert_cols(2)# Delete rows
sheet.delete_rows(7,2)# Delete 2 rows starting at row 7# Delete columns
sheet.delete_cols(3)# Delete column C
wb.save("modified_structure.xlsx")Altyapı:
openpyxl zengin özelliklere sahip olsa da kullanıcılar bazı sınırlamalara dikkat çekmiştir:
Adlandırılmış aralıklar için sınırlı destek
Gelişmiş özellikler için dokümantasyon örnekleri sınırlı olabilir
Çok büyük dosyalar için performans yavaş olabilir (read-only modu yardımcı olur)
Bu sınırlamalara rağmen openpyxl güçlü bir topluluk desteğine sahiptir. Sorunlar GitLab takipçisinde bildirilebilir ve zaman zaman profesyonel destek mevcuttur. Daha fazla bilgi ve yardım için şu kaynaklara başvurabilirsiniz:
openpyxl, Excel dosyalarını okumak, yazmak ve biçimlendirmek için eksiksiz destek sunan, Python tabanlı Excel otomasyonu için yerleşik bir kütüphanedir. Otomatik iş akışlarında, tek tek hücreleri değiştirmekten grafikler oluşturmaya ve karmaşık biçimlendirmeler uygulamaya kadar elektronik tablo çıktısı üzerinde ayrıntılı kontrol sağlar.
Özellikle rapor oluştururken veya tabular verileri işlerken Excel dosyalarını programatik olarak üretmesi ya da analiz etmesi gereken kullanıcılar için openpyxl kapsamlı bir araç seti sunar. Excel kurulumuna ihtiyaç duymadan çalışabilmesi, onu sunucu ortamları ve otomatik veri hatları için özellikle değerli kılar.
İster finansal modeller oluşturuyor, ister veri analiz ediyor ya da rapor üretiyor olun, openpyxl Excel dosyalarını Python kodu aracılığıyla verimli bir şekilde işlemeniz için size gerekli araçları sunar.
openpyxl SSS
openpyxl hangi dosya türlerini destekler?⌄
openpyxl, .xlsx, .xlsm, .xltx ve xltm dahil olmak üzere çeşitli Excel formatlarını destekler. Excel 2003 ve öncesinde kullanılan eski .xls formatını desteklemez.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
openpyxl, Excel 2007 ile tanıtılan modern XML tabanlı formatlardaki (.xlsx, .xlsm) Excel dosyalarını okumanıza ve yazmanıza olanak tanıyan verimli bir Python kütüphanesidir; Excel 2010'dan itibaren gelişmiş özelliklere tam destek sunar. Başlangıçta PHPExcel'in Python uyarlaması olarak geliştirildi ve aktif bir geliştirici topluluğu tarafından bakım görmeye devam ediyor. Kütüphane, veri otomasyonu, raporlama ve biçimlendirme iş akışlarında öne çıkar; Excel dosyalarıyla çalışması gereken ancak sistemlerinde Excel yüklü olmayan kullanıcılar için özellikle faydalıdır.
Birçok kuruluş, finansal raporları otomatikleştirmek, veritabanı dışa aktarımlarından grafikler oluşturmak ve pazarlama raporlarına formüller ile biçimlendirme uygulamak için openpyxl kullanır. Bu kütüphane, tamamıyla Python kodu aracılığıyla Excel dosyaları üzerinde ince ayar kontrolü sunar.
openpyxl Nedir?
openpyxl, özellikle Excel 2010+ formatlarına yerel destek sağlamak üzere tasarlanmıştır. Kütüphane birkaç dosya formatıyla çalışır:
.xlsx- Excel çalışma kitabı.xlsm- Makrolu Excel çalışma kitabı.xltx- Excel şablonu.xltm- Makrolu Excel şablonuopenpyxl'in en büyük avantajlarından biri, bilgisayarınıza Excel'in kurulu olmasını gerektirmemesidir. Bu da onu sunucu ortamları, otomatik raporlama sistemleri ve veri işleme hatları için ideal kılar. pandas dahil olmak üzere çeşitli Python kütüphaneleri, Excel arayüzü olarak openpyxl'i kullanır; bu da onun güvenilirliğini ve işlevselliğini gösterir.
openpyxl'in Kurulumu ve İçe Aktarımı
openpyxl'i pip ile kurmak oldukça basittir:
Güvenilmeyen kaynaklardan gelen dosyalarla çalışırken güvenliği artırmak için isteğe bağlı
defusedxmlpaketini de kurabilirsiniz:openpyxl'i Python betiklerinizde kullanmak için gerekli sınıfları içe aktarın:
Temel Kavramlar ve Terminoloji
openpyxl'i etkili kullanmak için temel Excel yapısını anlamanız gerekir:
openpyxl'de hücrelere şu iki yöntemle başvurabilirsiniz:
Excel biçemi referanslar:
sheet[“A1”]Satır-sütun indeksleme:
sheet.cell(row=1, column=1)(Not: openpyxl, 0 tabanlı değil, 1 tabanlı indeksleme kullanır)openpyxl ile Excel Dosyalarını Okuma
İşte bir Excel dosyasından veri okumayı gösteren pratik bir örnek:
Bir çalışma kitabını yükleyin ve keşfedin
İsteğe bağlı parametreler, çalışma kitabının nasıl yükleneceğini kontrol eder:
read_only=Truebüyük dosyalar için performansı artırır ancak düzenleme yeteneklerini sınırlardata_only=Trueformüller yerine hesaplanan değerleri döndürürVeriler arasında yineleme yapın
Birden çok hücreyi verimli bir şekilde işlemek için yineleme yöntemlerini kullanın:
Python veri yapılarına dönüştürün
Excel verilerini Python veri yapılarına kolayca dönüştürebilirsiniz:
openpyxl ile Excel Dosyalarına Yazma
openpyxl ile Excel dosyaları oluşturmak ve değiştirmek de aynı derecede kolaydır.
Bir çalışma kitabı oluşturun ve temel veriler yazın
Mevcut Excel dosyalarını değiştirin
Verileri dinamik olarak ekleyin
.append()yöntemi yeni satırlar eklemeyi kolaylaştırır:Excel'de Biçimlendirme ve Stil
openpyxl, hücre biçimlendirme ve stillendirme için kapsamlı seçenekler sunar.
Yazı tipleri, kenarlıklar ve hizalama ekleyin
Koşullu biçimlendirme
Koşullu biçimlendirme, hücre değerlerine göre stiller uygulamanıza olanak tanır:
Gelişmiş Özellikler
openpyxl, karmaşık elektronik tablo görevlerine yardımcı olan birçok gelişmiş Excel özelliğini destekler.
Formül ekleme
Not:
load_workbook()kullanıldığında formüller openpyxl tarafından otomatik olarak hesaplanmaz. Hesaplanan değerleri görmek içinload_workbook(“file.xlsx”, data_only=True)kullanın.Grafik ekleme
openpyxl çeşitli grafik türleri oluşturabilir:
Görsel ekleme
Not: Görsellerle çalışmak için Pillow kütüphanesinin kurulu olması gerekir:
pip install pillowSayfa, Satır ve Sütun Yönetimi
openpyxl, Excel dosyalarınızın yapısını yönetmek için işlevler sağlar:
Sayfa oluşturma ve kaldırma
Sayfaları yeniden adlandırma
Çalışma sayfalarını kopyalama
Satır ve sütun ekleme/silme
Bölmeleri dondurma ve filtre ekleme
Sınırlamalar ve Topluluk Geri Bildirimi
openpyxl zengin özelliklere sahip olsa da kullanıcılar bazı sınırlamalara dikkat çekmiştir:
Bu sınırlamalara rağmen openpyxl güçlü bir topluluk desteğine sahiptir. Sorunlar GitLab takipçisinde bildirilebilir ve zaman zaman profesyonel destek mevcuttur. Daha fazla bilgi ve yardım için şu kaynaklara başvurabilirsiniz:
Sonuç
openpyxl, Excel dosyalarını okumak, yazmak ve biçimlendirmek için eksiksiz destek sunan, Python tabanlı Excel otomasyonu için yerleşik bir kütüphanedir. Otomatik iş akışlarında, tek tek hücreleri değiştirmekten grafikler oluşturmaya ve karmaşık biçimlendirmeler uygulamaya kadar elektronik tablo çıktısı üzerinde ayrıntılı kontrol sağlar.
Özellikle rapor oluştururken veya tabular verileri işlerken Excel dosyalarını programatik olarak üretmesi ya da analiz etmesi gereken kullanıcılar için openpyxl kapsamlı bir araç seti sunar. Excel kurulumuna ihtiyaç duymadan çalışabilmesi, onu sunucu ortamları ve otomatik veri hatları için özellikle değerli kılar.
İster finansal modeller oluşturuyor, ister veri analiz ediyor ya da rapor üretiyor olun, openpyxl Excel dosyalarını Python kodu aracılığıyla verimli bir şekilde işlemeniz için size gerekli araçları sunar.