Sådan arbejder du med tabeller i Python

Sådan arbejder du med tabeller i Python

Aspose.Slides FOSS for Python understøtter at oprette tabeller på dias med konfigurerbare kolonnebredder og rækkehøjder. Denne vejledning viser, hvordan man tilføjer en tabel, udfylder den med data og anvender grundlæggende tekstformatering på celler.

Trin-for-trin guide

Trin 1: Installer pakken

pip install aspose-slides-foss

Trin 2: Opret eller åbn en præsentation

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)

Trin 3: Definer kolonnebredder og rækkehøjder

Tabeller kræver eksplicitte kolonnebredder og rækkehøjder i point (1 point = 1/72 tomme). Et standard slide er 720 point bredt og 540 point højt.

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

Trin 4: Tilføj tabellen

slide.shapes.add_table(x, y, col_widths, row_heights) opretter tabellen på position (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)

Trin 5: Indstil celletekst

Få adgang til celler via table.rows[row_index][col_index] og tildel tekst gennem .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)

Trin 6: Formater headercelletekst

Anvend fed formatering på overskriftsceller ved hjælp af 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)

Komplet Arbejdseksempel

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

Almindelige problemer og rettelser

IndexError ved adgang til table.rows[row][col]

Række- og kolonneindekser er nulbaserede. Hvis du definerede row_heights med 3 elementer, er gyldige rækkeindekser 0, 1, 2.

Celletekst vises ikke i den gemte fil

Tildel altid via .text_frame.text, ikke via .text direkte på celleobjektet:

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

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

Tabelposition er uden for sliden

Kontroller, at x + sum(col_widths) <= 720 og y + sum(row_heights) <= 540 for en standard slide.


Ofte stillede spørgsmål

Kan jeg flette tabelceller?

Cellefletning understøttes ikke i denne udgave.

Kan jeg anvende en baggrundsfarve på hele tabellen?

Anvend udfyldningsformatering på hver enkelt celle:

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)

Kan jeg indstille cellekantstile?

Cellekant‑egenskaber er tilgængelige gennem table.rows[row][col].border_*‑egenskaber. Se API‑referencen for den fulde liste over kantformatattributter.


Se også

 Dansk