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-fossLangkah 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 rowsLangkah 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.