📚 Bu yazı bir serinin parçası — Python ile Ofis Otomasyonu
  1. Bölüm 1: Python ile Ofis Otomasyonu #1: Word Belgeleri Oluşturma (bu yazı)
  2. Bölüm 2: Python ile Ofis Otomasyonu #2: PowerPoint Sunumları
  3. 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.