Python içinde Tablolarla Nasıl Çalışılır

Python içinde Tablolarla Nasıl Çalışılır

Aspose.Slides FOSS for Python supports creating tables on slides with configurable column widths and row heights. This guide shows how to add a table, populate it with data, and apply basic text formatting to cells.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

pip install aspose-slides-foss

Adım 2: Bir Sunum Oluşturun veya Açın

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add table ...
    prs.save("table.pptx", SaveFormat.PPTX)

Adım 3: Sütun Genişliklerini ve Satır Yüksekliklerini Tanımlayın

Tablolar, nokta cinsinden (1 nokta = 1/72 inç) açık sütun genişlikleri ve satır yükseklikleri gerektirir. Standart bir slayt 720 nokta genişliğinde ve 540 nokta yüksekliğindedir.

col_widths = [200.0, 150.0, 150.0]   # 3 columns: 200pt + 150pt + 150pt
row_heights = [45.0, 40.0, 40.0]     # 3 rows: 45pt header + 40pt data rows

Adım 4: Tabloyu Ekleyin

slide.shapes.add_table(x, y, col_widths, row_heights) tabloyu konumda oluşturur (x, y):

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [200.0, 150.0, 150.0]
    row_heights = [45.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 100, col_widths, row_heights)

    prs.save("table.pptx", SaveFormat.PPTX)

Adım 5: Hücre Metnini Ayarlayın

Hücrelere şunun aracılığıyla erişin table.rows[row_index][col_index] ve metni şunun aracılığıyla atayın .text_frame.text:

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [200.0, 150.0, 150.0]
    row_heights = [45.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 100, col_widths, row_heights)

    # Header row (row 0)
    headers = ["Product", "Units Sold", "Revenue"]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header

    # Data rows
    data = [
        ["Widget A", "1,200", "$24,000"],
        ["Widget B", "850", "$17,000"],
    ]
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("sales-table.pptx", SaveFormat.PPTX)

Adım 6: Başlık Hücre Metnini Biçimlendirin

Üstbilgi hücrelerine kalın biçimlendirme uygulamak için PortionFormat:

from aspose.slides_foss import NullableBool, FillType
from aspose.slides_foss.drawing import Color

for col in range(len(headers)):
    cell = table.rows[0][col]
    portions = cell.text_frame.paragraphs[0].portions
    if portions:
        fmt = portions[0].portion_format
        fmt.font_bold = NullableBool.TRUE
        fmt.fill_format.fill_type = FillType.SOLID
        fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 255, 255, 255)

Tam Çalışan Örnek

import aspose.slides_foss as slides
from aspose.slides_foss import NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

data_rows = [
    ["North", "$1.2M", "+8%"],
    ["South", "$0.9M", "+4%"],
    ["East",  "$1.5M", "+12%"],
    ["West",  "$0.7M", "+2%"],
]
headers = ["Region", "Revenue", "Growth"]

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [180.0, 140.0, 120.0]
    row_heights = [45.0] + [38.0] * len(data_rows)

    table = slide.shapes.add_table(60, 80, col_widths, row_heights)

    # Header row
    for col, text in enumerate(headers):
        cell = table.rows[0][col]
        cell.text_frame.text = text
        if cell.text_frame.paragraphs and cell.text_frame.paragraphs[0].portions:
            fmt = cell.text_frame.paragraphs[0].portions[0].portion_format
            fmt.font_bold = NullableBool.TRUE

    # Data rows
    for row_idx, row_data in enumerate(data_rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("regional-revenue.pptx", SaveFormat.PPTX)

print("Saved regional-revenue.pptx")

Yaygın Sorunlar ve Çözümler

IndexError erişirken table.rows[row][col]

Satır ve sütun indeksleri sıfır tabanlıdır. Eğer tanımladıysanız row_heights 3 öğe ile, geçerli satır indeksleri 0, 1, 2’dir.

Hücre metni kaydedilen dosyada görünmüyor

Her zaman şunun aracılığıyla atayın .text_frame.text, şunun aracılığıyla değil .text hücre nesnesi üzerinde doğrudan:

# Correct
table.rows[0][0].text_frame.text = "Header"

# Wrong: AttributeError or silent failure
table.rows[0][0].text = "Header"

Tablo konumu slaytın dışına çıkıyor

Şunu kontrol edin x + sum(col_widths) <= 720 ve y + sum(row_heights) <= 540 standart bir slayt için.


Sık Sorulan Sorular

Tablo hücrelerini birleştirebilir miyim?

Hücre birleştirme bu sürümde desteklenmiyor.

Tablo genelinde arka plan rengi uygulayabilir miyim?

Dolgu biçimlendirmesini her bir hücreye uygulayın:

for row_idx in range(len(table.rows)):
    for col_idx in range(len(table.rows[row_idx])):
        cell = table.rows[row_idx][col_idx]
        cell.fill_format.fill_type = FillType.SOLID
        cell.fill_format.solid_fill_color.color = Color.from_argb(255, 240, 248, 255)

Hücre kenarlık stillerini ayarlayabilir miyim?

Hücre kenar özelliklerine şunun aracılığıyla erişilebilir table.rows[row][col].border_* özellikleri. Kenar biçimlendirme özniteliklerinin tam listesi için API referansına bakın.


Ayrıca Bakınız

 Türkçe