📚 Bu yazı bir serinin parçası — Python ile Ofis Otomasyonu
- Bölüm 1: Python ile Ofis Otomasyonu #1: Word Belgeleri Oluşturma (bu yazı)
- Bölüm 2: Python ile Ofis Otomasyonu #2: PowerPoint Sunumları
- Bölüm 3: Python ile Ofis Otomasyonu #3: Kişiye Özel Toplu E-posta
Her teklif, sözleşme veya rapor için aynı Word şablonunu elle doldurmak çok zaman alır. python-docx ile bu belgeleri verilerden otomatik üretebilirsiniz. Ofis Otomasyonu serimizin ilk yazısındayız.
Kurulum
pip install python-docx
Sıfırdan belge oluşturmak
from docx import Document
belge = Document()
belge.add_heading("Teklif Mektubu", level=0)
belge.add_paragraph("Sayin Ahmet Kaya,")
belge.add_paragraph("Talebiniz uzerine hazirladigimiz teklif asagidadir.")
belge.add_heading("Hizmet Detaylari", level=1)
tablo = belge.add_table(rows=1, cols=2)
tablo.style = "Light Grid Accent 1"
tablo.rows[0].cells[0].text = "Hizmet"
tablo.rows[0].cells[1].text = "Tutar"
satir = tablo.add_row().cells
satir[0].text = "Web otomasyonu"
satir[1].text = "15.000 TL"
belge.save("teklif.docx")
print("teklif.docx olusturuldu.")
Şablondan çoğaltmak
Asıl güç, tek bir belgeyi bir listedeki her kişi için üretmektir. Örneğin bir Excel'deki her müşteri için ayrı teklif:
import pandas as pd
from docx import Document
musteriler = pd.read_excel("musteriler.xlsx")
for _, m in musteriler.iterrows():
belge = Document("sablon.docx") # hazir sablonu ac
for p in belge.paragraphs:
p.text = p.text.replace("[AD]", m["ad"]).replace("[TUTAR]", str(m["tutar"]))
belge.save("teklif_" + m["ad"] + ".docx")
💡
Şablonda değiştirilecek yerleri [AD], [TUTAR] gibi işaretleyip kodla değiştirmek, en pratik yöntemdir.
Sırada bunun sunum hali var: bir sonraki yazıda PowerPoint sunumlarını otomatik oluşturmayı göreceğiz.