Cara Bekerja dengan Jadual dalam Python

Cara Bekerja dengan Jadual dalam 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: Pasang Pakej

pip install aspose-slides-foss

Langkah 2: Cipta atau Buka Persembahan

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 Lajur dan Tinggi Baris

Jadual memerlukan lebar lajur dan tinggi baris yang jelas dalam titik (1 titik = 1/72 inci). Slaid standard berukuran 720 titik lebar dan 540 titik 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: Tambah Jadual

slide.shapes.add_table(x, y, col_widths, row_heights) mencipta jadual pada kedudukan (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: Tetapkan 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

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

Isu Umum dan Penyelesaian

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

Indeks baris dan lajur bermula dari sifar. Jika anda mendefinisikan row_heights dengan 3 elemen, indeks baris yang sah ialah 0, 1, 2.

Teks sel tidak muncul dalam fail yang disimpan

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

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

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

Kedudukan jadual berada di luar slaid

Semak bahawa x + sum(col_widths) <= 720 dan y + sum(row_heights) <= 540 untuk slaid standard.


Soalan Lazim

Bolehkah saya menggabungkan sel jadual?

Penggabungan sel tidak disokong dalam edisi ini.

Bolehkah saya menggunakan warna latar belakang untuk keseluruhan jadual?

Terapkan pemformatan isi pada setiap sel secara individu:

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)

Bolehkah saya menetapkan gaya sempadan sel?

Sifat sempadan sel boleh diakses melalui table.rows[row][col].border_* sifat. Rujuk kepada rujukan API untuk senarai lengkap atribut format sempadan.


Lihat Juga

 Bahasa Melayu