Cara Bekerja dengan Tabel di Python

Cara Bekerja dengan Tabel di Python

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.

Panduan Langkah-demi-Langkah

Langkah 1: Instal Paket

pip install aspose-slides-foss

Langkah 2: Buat atau Buka Presentasi

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)

Langkah 3: Tentukan Lebar Kolom dan Tinggi Baris

Tabel memerlukan lebar kolom dan tinggi baris yang eksplisit dalam poin (1 poin = 1/72 inci). Sebuah slide standar berukuran 720 poin lebar dan 540 poin tinggi.

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

Langkah 4: Tambahkan Tabel

slide.shapes.add_table(x, y, col_widths, row_heights) membuat tabel pada posisi (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)

Langkah 5: Atur Teks Sel

Akses sel melalui table.rows[row_index][col_index] dan tetapkan teks melalui .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)

Langkah 6: Format Teks Sel Header

Terapkan format tebal pada sel header menggunakan 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)

Contoh Kerja Lengkap

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")

Masalah Umum dan Solusinya

IndexError saat mengakses table.rows[row][col]

Indeks baris dan kolom dimulai dari nol. Jika Anda mendefinisikan row_heights dengan 3 elemen, indeks baris yang valid adalah 0, 1, 2.

Teks sel tidak muncul dalam file yang disimpan

Selalu tetapkan melalui .text_frame.text, bukan melalui .text langsung pada objek sel:

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

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

Posisi tabel berada di luar slide

Periksa bahwa x + sum(col_widths) <= 720 dan y + sum(row_heights) <= 540 untuk slide standar.


Pertanyaan yang Sering Diajukan

Bisakah saya menggabungkan sel tabel?

Penggabungan sel tidak didukung dalam edisi ini.

Bisakah saya menerapkan warna latar belakang pada seluruh tabel?

Terapkan format isian pada setiap sel secara individual:

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)

Bisakah saya mengatur gaya batas sel?

Properti batas sel dapat diakses melalui table.rows[row][col].border_* properti. Lihat referensi API untuk daftar lengkap atribut format batas.


Lihat Juga

 Bahasa Indonesia