Kā strādāt ar tabulām Python

Kā strādāt ar tabulām 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.

Solī pa solim rokasgrāmata

1. solis: instalējiet pakotni

pip install aspose-slides-foss

2. solis: Izveidot vai atvērt prezentāciju

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)

3. solis: Definēt kolonnu platumus un rindu augstumus

Tabulām ir jānorāda konkrēti kolonnu platumi un rindu augstumi punktos (1 punkts = 1/72 collas). Standarta slaids ir 720 punktus plats un 540 punktus garš.

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

4. solis: Pievienot tabulu

slide.shapes.add_table(x, y, col_widths, row_heights) izveido tabulu pozīcijā (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)

5. solis: Iestatīt šūnas tekstu

Piekļūst šūnām, izmantojot table.rows[row_index][col_index] un piešķir tekstu, izmantojot .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)

6. solis: Formatēt galvenes šūnas tekstu

Pielieto treknraksta formatējumu galvenes šūnām, izmantojot 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)

Pilns Darbīgs Piemērs

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

Biežāk sastopamās problēmas un to risinājumi

IndexError pieejot table.rows[row][col]

Rindas un kolonnas indeksi sākas ar nulli. Ja jūs definējāt row_heights ar 3 elementiem, derīgi rindas indeksi ir 0, 1, 2.

Šūnas teksts neparādās saglabātajā failā

Vienmēr piešķiriet, izmantojot .text_frame.text, nevis caur .text tieši uz šūnas objektu:

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

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

Tabulas pozīcija ir ārpus slaida

Pārbaudiet, ka x + sum(col_widths) <= 720 un y + sum(row_heights) <= 540 standarta slaidam.


Biežāk uzdotie jautājumi

Vai varu apvienot tabulas šūnas?

Šūnu apvienošana šajā izdevumā nav atbalstīta.

Vai varu uzlikt fona krāsu visai tabulai?

Lietojiet aizpildījuma formatēšanu katrai atsevišķai šūnai:

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)

Vai varu iestatīt šūnas robežu stilus?

Šūnas robežas īpašības ir pieejamas caur table.rows[row][col].border_* īpašībām. Atsaucieties uz API atsauci, lai iegūtu pilnu robežas formāta atribūtu sarakstu.


Skatīt arī

 Latviešu