Πώς να εργαστείτε με πίνακες στην Python

Πώς να εργαστείτε με πίνακες στην Python

Το Aspose.Slides FOSS for Python υποστηρίζει τη δημιουργία πινάκων στις διαφάνειες με ρυθμιζόμενο πλάτος στηλών και ύψος γραμμών. Αυτός ο οδηγός δείχνει πώς να προσθέσετε έναν πίνακα, να τον γεμίσετε με δεδομένα και να εφαρμόσετε βασική μορφοποίηση κειμένου στα κελιά.

Οδηγός βήμα προς βήμα

Βήμα 1: Εγκατάσταση του πακέτου

pip install aspose-slides-foss

Βήμα 2: Δημιουργία ή Άνοιγμα Παρουσίασης

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: Ορισμός Πλάτους Στηλών και Ύψους Γραμμών

Οι πίνακες απαιτούν ρητά πλάτη στηλών και ύψη γραμμών σε μονάδες σημείου (1 σημείο = 1/72 ίντσα). Μια τυπική διαφάνεια έχει πλάτος 720 σημείων και ύψος 540 σημείων.

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: Προσθήκη του Πίνακα

slide.shapes.add_table(x, y, col_widths, row_heights) δημιουργεί τον πίνακα στη θέση (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: Ορισμός κειμένου κελιού

Πρόσβαση στα κελιά μέσω table.rows[row_index][col_index] και ανάθεση κειμένου μέσω .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: Διαμόρφωση κειμένου κεφαλίδας κελιού

Εφαρμόστε έντονη μορφοποίηση στα κελιά κεφαλίδας χρησιμοποιώντας 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)

Πλήρες Παράδειγμα Λειτουργίας

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

Κοινά προβλήματα και διορθώσεις

IndexError κατά την πρόσβαση table.rows[row][col]

Οι δείκτες γραμμής και στήλης είναι μηδενικής βάσης. Εάν ορίσατε row_heights με 3 στοιχεία, οι έγκυροι δείκτες γραμμής είναι 0, 1, 2.

Το κείμενο του κελιού δεν εμφανίζεται στο αποθηκευμένο αρχείο

Πάντα εκχωρείτε μέσω .text_frame.text, όχι μέσω .text απευθείας στο αντικείμενο κελιού:

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

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

Η θέση του πίνακα είναι εκτός της διαφάνειας

Ελέγξτε ότι x + sum(col_widths) <= 720 και y + sum(row_heights) <= 540 για μια τυπική διαφάνεια.


Συχνές Ερωτήσεις

Μπορώ να συγχωνεύσω κελιά πίνακα;

Η συγχώνευση κελιών δεν υποστηρίζεται σε αυτήν την έκδοση.

Μπορώ να εφαρμόσω χρώμα φόντου σε ολόκληρο τον πίνακα;

Εφαρμόστε μορφοποίηση γεμίσματος σε κάθε μεμονωμένο κελί:

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)

Μπορώ να ορίσω στυλ περιγράμματος κελιού;

Οι ιδιότητες περιγράμματος κελιού είναι προσβάσιμες μέσω των ιδιοτήτων table.rows[row][col].border_*. Ανατρέξτε στην αναφορά API για τον πλήρη κατάλογο των χαρακτηριστικών μορφοποίησης περιγράμματος.


Δείτε επίσης

 Ελληνικά