Prezentációs táblázatok kezelése Pythonban
Bevezetés
A PowerPoint táblázatai sorokba és oszlopokba szervezik az információkat, megkönnyítve ezzel az olvasást és az értékek összehasonlítását.
Az Aspose.Slides a Table és Cell osztályokat valamint egyéb típusokat biztosít, amelyekkel táblázatokat hozhat létre, frissíthet és kezelhet a prezentációkban.
Táblázat létrehozása nulláról
Hozzon létre egy táblázatot a pozíciójának, az oszlopszélességeknek és a sormagasságoknak a megadásával. A diára való felhelyezés után formázhatja a cellahatárokat, egyesítheti a cellákat, és szöveget illeszthet be.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen referenciát a diára annak indexe alapján.
- Határozzon meg egy pontban megadott oszlopszélességek listáját.
- Határozzon meg egy pontban megadott sormagasságok listáját.
- Adjon a diához egy Table objektumot az add_table metódus segítségével.
- Iteráljon végig minden Cell objektumon, hogy alkalmazza a formázást a felső, alsó, jobb és bal határokra.
- Egyesítse a táblázat első sorának első két celláját.
- A merge‑elt cellához a text_frame tulajdonságon keresztül férhet hozzá.
- Állítsa be a szöveget a merge‑elt cellában.
- Mentse el a módosított prezentációt.
Az alábbi példa egy három oszlopos és öt soros táblázatot hoz létre a (100, 50) pontban. Piros határokat alkalmaz 5 pont szélességgel, egyesíti az első sor első két celláját, és a végeredményt table.pptx‑ként menti.
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
for row in table.rows:
for cell in row:
cell_format = cell.cell_format
cell_format.border_top.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_top.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_top.width = 5
cell_format.border_bottom.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_bottom.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_bottom.width = 5
cell_format.border_left.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_left.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_left.width = 5
cell_format.border_right.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_right.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_right.width = 5
table.merge_cells(table.rows[0][0], table.rows[0][1], False)
table.rows[0][0].text_frame.text = "Merged Cells"
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Számozás egy szabványos táblázatban
Egy szabványos táblázatban a cellaindexek nulláról indulnak és (oszlop, sor) sorrendet használnak. Az első cella indexe (0, 0). Pythonban a cellához a table.rows[row_index][column_index] szintaxissal férhet hozzá; ebben a kifejezésben a sorindex jön először.
Például a 4 oszlopból és 4 sorból álló táblázat cellái a következőképpen vannak számozva:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
Ez a példa létrehozza a fent ábrázolt 4 × 4-es táblázatot, 70 pontos oszlopszélességekkel és sormagasságokkal, valamint 5 pont szélességű piros cellahatárokkal. A koordináták a cellaindexeket szemléltetik; a példa üresen hagyja a cellákat, és a táblázatot StandardTables_out.pptx‑ként menti.
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
column_widths = [70, 70, 70, 70]
row_heights = [70, 70, 70, 70]
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
for row in table.rows:
for cell in row:
cell_format = cell.cell_format
cell_format.border_top.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_top.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_top.width = 5
cell_format.border_bottom.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_bottom.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_bottom.width = 5
cell_format.border_left.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_left.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_left.width = 5
cell_format.border_right.fill_format.fill_type = slides.FillType.SOLID
cell_format.border_right.fill_format.solid_fill_color.color = draw.Color.red
cell_format.border_right.width = 5
presentation.save("StandardTables_out.pptx", slides.export.SaveFormat.PPTX)
Meglévő táblázat elérése
A táblázatok a diák alakzatgyűjteményében tárolódnak. Iteráljon végig az alakzatokon a táblázat megtalálásához, majd a Table osztály segítségével olvassa vagy frissítse annak celláit.
- Töltse be a prezentációt a Presentation osztály segítségével.
- Szerezzen referenciát az adott indexű diára, amely a táblázatot tartalmazza.
- Iteráljon végig a Shape objektumokon, és álljon le, amikor táblázatot talál. Ha a dián több táblázat is van, használja az alternative_text tulajdonságot a szükséges azonosításához.
- Frissítse a célcellában lévő szöveget.
- Mentse el a módosított prezentációt.
Az alábbi példa megnyitja a UpdateExistingTable.pptx fájlt, és megtalálja az első táblázatot az első dián. A 0. oszlop, 1. sor celláját New‑re állítja, majd a végeredményt table1_out.pptx‑ként menti. A bemenetnek legalább egy diát kell tartalmaznia, és azon a dián az első táblázatnak legalább egy oszloppal és két sorral kell rendelkeznie.
import aspose.slides as slides
with slides.Presentation("UpdateExistingTable.pptx") as presentation:
slide = presentation.slides[0]
table = None
for shape in slide.shapes:
if isinstance(shape, slides.Table):
table = shape
break
if table is not None and len(table.rows) >= 2:
table.rows[1][0].text_frame.text = "New"
presentation.save("table1_out.pptx", slides.export.SaveFormat.PPTX)
A meglévő táblázat egy sorának átméretezéséhez és annak megértéséhez, hogy miért haladhatja meg a tényleges magasság a kért minimumot, lásd a Sor magasságának vezérlése.
Az a cella megtalálása, amelyik a szövegkeretet birtokolja
Amikor általános szövegfeldolgozó kód egy TextFrame objektumot kap egy táblázatból, akkor a TextFrame.parent_cell tulajdonságot használja a tulajdonos Cell lekéréséhez. Egy táblázatcellából származó szövegkeret esetén a TextFrame.parent_cell be van állítva, míg a TextFrame.parent_shape értéke None, még akkor is, ha maga a táblázat egy alakzat.
A cella koordinátái a csak olvasható Cell.first_column_index és Cell.first_row_index tulajdonságokon keresztül érhetők el. A TextFrame.parent_cell is csak olvasható: navigációt biztosít a tulajdonos felé, de nem módosítja a tulajdonjogot. Mindig ellenőrizze, hogy a visszaadott cella nem None‑e, mielőtt használja.
Egy teljes példáért, amely azonosítja a táblázat‑cellákat és alakzat‑tulajdonosokat, beleértve a SmartArt‑csomópontokhoz tartozó alakzatokat, lásd a Szöveg keresése és cseréje.
Szöveg igazítása táblázatban
Az egyes táblázatcellák függőleges rögzítését és szövegirányát szabályozhatja. Az ebben a szakaszban szereplő példa a szöveget a első cellában középre helyezi, és 270 fokkal elforgatja.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen referenciát a diára annak indexe alapján.
- Adj egy Table objektumot a diára.
- Szerezzen hozzáférést egy TextFrame objektumhoz a táblázatból.
- Szerezze meg az első Paragraph objektumot, és állítsa be a szövegét és színét.
- Állítsa be a cella text_anchor_type és text_vertical_type értékeit.
- Mentse el a módosított prezentációt.
Ez a példa egy 4 × 4-es táblázatot hoz létre, 120 pontos oszlopszélességekkel és 100 pontos sormagasságokkal. Formázza a (0, 0) cellában lévő szöveget, értékeket ad a első sor többi cellájához, és a végeredményt Vertical_Align_Text_out.pptx‑ként menti.
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
column_widths = [120, 120, 120, 120]
row_heights = [100, 100, 100, 100]
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
table.rows[0][1].text_frame.text = "10"
table.rows[0][2].text_frame.text = "20"
table.rows[0][3].text_frame.text = "30"
cell = table.rows[0][0]
paragraph = cell.text_frame.paragraphs[0]
portion = paragraph.portions[0]
portion.text = "Text here"
portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.fill_format.solid_fill_color.color = draw.Color.black
cell.text_anchor_type = slides.TextAnchorType.CENTER
cell.text_vertical_type = slides.TextVerticalType.VERTICAL270
presentation.save("Vertical_Align_Text_out.pptx", slides.export.SaveFormat.PPTX)
Szövegformázás beállítása a táblázat szintjén
Használja a set_text_format metódust, hogy szövegformázást alkalmazzon a táblázat összes cellájára. A túlterhelései tartomány-, bekezdés- és szövegkeret-formázást is elfogadják, így ezeket a tulajdonságokat anélkül állíthatja be, hogy egyes cellákon iterálna.
- Töltse be a prezentációt a Presentation osztály segítségével.
- Szerezzen referenciát a diára annak indexe alapján.
- Szerezzen hozzáférést egy Table objektumhoz a diáról.
- Állítsa be a font_height értéket a szöveghez.
- Állítsa be az alignment és a margin_right értékeket.
- Állítsa be a text_vertical_type értékét.
- Mentse el a módosított prezentációt.
Az alábbi példa megnyitja a table.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, és azon a dián a táblázatnak az első alakzatnak kell lennie. A betűméretet 25 pontra állítja, a bekezdéseket jobbra igazítja 20 pont jobb margóval, és a szöveget függőlegessé teszi. A formázott prezentációt result.pptx‑ként menti.
import aspose.slides as slides
with slides.Presentation("table.pptx") as presentation:
slide = presentation.slides[0]
table = slide.shapes[0]
portion_format = slides.PortionFormat()
portion_format.font_height = 25
table.set_text_format(portion_format)
paragraph_format = slides.ParagraphFormat()
paragraph_format.alignment = slides.TextAlignment.RIGHT
paragraph_format.margin_right = 20
table.set_text_format(paragraph_format)
text_frame_format = slides.TextFrameFormat()
text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL
table.set_text_format(text_frame_format)
presentation.save("result.pptx", slides.export.SaveFormat.PPTX)
Táblázat stílus tulajdonságainak lekérése
Használja a style_preset metódust egy táblázat előre beállított stílusának olvasásához vagy hozzárendeléséhez. Ez a példa a TableStylePreset.DARK_STYLE1 értéket alkalmaz egy táblázatra, kiírja az előre beállított nevét, majd ugyanazt a beállítást a második táblázatra is alkalmazza. Mindkét táblázat a table-style.pptx‑ben lesz mentve.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
column_widths = [100, 150]
row_heights = [5, 5, 5]
table = slide.shapes.add_table(10, 10, column_widths, row_heights)
table.style_preset = slides.TableStylePreset.DARK_STYLE1
style_preset = table.style_preset
print(f"Table style preset: {style_preset.name}")
another_table = slide.shapes.add_table(10, 100, column_widths, row_heights)
another_table.style_preset = style_preset
presentation.save("table-style.pptx", slides.export.SaveFormat.PPTX)
Táblázat méretarányának zárolása
A táblázat képaránya a szélességének és magasságának arányát jelenti. Használja az aspect_ratio_locked tulajdonságot a képarány zárolásához egy táblázatnál.
Ez a példa megnyitja a pres.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, és azon a dián a táblázatnak az első alakzatnak kell lennie. Kiírja a jelenlegi zárolási állapotot, engedélyezi a képarány zárolását, majd kiírja a frissített állapotot (True), és a végeredményt pres-out.pptx‑ként menti.
import aspose.slides as slides
with slides.Presentation("pres.pptx") as presentation:
slide = presentation.slides[0]
table = slide.shapes[0]
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
table.shape_lock.aspect_ratio_locked = True
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
presentation.save("pres-out.pptx", slides.export.SaveFormat.PPTX)
GYIK
Engedélyezhetem a jobbról balra (RTL) olvasási irányt az egész táblázat és a celláiban lévő szöveg számára?
Igen. A táblázat rendelkezik egy right_to_left tulajdonsággal, a bekezdések pedig a ParagraphFormat.right_to_left tulajdonsággal. Mindkettő használata biztosítja a helyes RTL sorrendet és a cellákon belüli megjelenítést.
Hogyan akadályozhatom meg, hogy a felhasználók mozgassák vagy átméretezzék a táblázatot a végleges fájlban?
Használja a shape locks funkciót a mozgás, átméretezés, kijelölés stb. letiltásához. Ezek a zárolások a táblázatokra is érvényesek.
Támogatott-e egy kép beillesztése egy cellába háttérként?
Igen. Beállíthat egy picture fill formátumot a cellához; a kép a kiválasztott mód (nyújtás vagy csempézés) szerint lefedi a cellaterületet.