PowerPoint táblák sorainak és oszlopainak kezelése Python segítségével
Bevezetés
Az Aspose.Slides for Python via Java lehetővé teszi a táblázat struktúrájának és formázásának kezelését PowerPoint‑prezentációkban a Table osztályon keresztül. Megjelölhet egy fejléces sort, másolhat vagy eltávolíthat sorokat és oszlopokat, és alkalmazhat szövegformázást egy teljes sorra vagy oszlopra.
Ez a cikk elmagyarázza ezeket a műveleteket Python példákkal. Bemutatja, hogyan lehet lekérni egy táblázat stíluselőbeállítását, hogy újra felhasználhassa. A táblázat sor‑ és oszlophatárai nulláról indulnak.
Sormagasság szabályozása
Használja a Row.setMinimalHeight metódust a sor minimummagasságának beállításához pontban. Ez egy alsó határ, nem rögzített magasság. A Row.getHeight visszaadja a tényleges magasságot. A sorhoz a Table.getRows segítségével férhet hozzá.
A példa betölti a row-height-input.pptx fájlt, amelyben a táblázat az első dia első alakja. Az első sor 70 pontnál kezdődik. A cellák 18 pontos Arial szöveget, sortörést, valamint 6 pontos felső és alsó margót használnak; a második oszlopban a hosszabb szöveg több sorra törik. A példa a minimumot 100 pontra növeli, majd 20 pontra csökkenti, minden változtatás után kiírja a tényleges magasságot, és elmenti mindkét eredményt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("row-height-input.pptx")
try:
slide = presentation.getSlides().get_Item(0)
table = slide.getShapes().get_Item(0)
row = table.getRows().get_Item(0)
row.setMinimalHeight(100)
print(f"Increased: minimum = {row.getMinimalHeight():.1f}, actual = {row.getHeight():.1f} pt")
presentation.save("row-height-increased.pptx", SaveFormat.Pptx)
row.setMinimalHeight(20)
print(f"Decreased: minimum = {row.getMinimalHeight():.1f}, actual = {row.getHeight():.1f} pt")
presentation.save("row-height-decreased.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
A megadott prezentációval a minimum növelése helyet ad a sornak. A csökkentés eltávolítja ezt a felesleges helyet, de a tényleges magasság 20 pontnál nagyobb marad, mivel a szövegnek és a cellamargóknak több helyre van szükségük. A minimum önmagában csökkentése nem képes a sort a tartalom által igényelt tér alá kényszeríteni.
Több tényező befolyásolja a tényleges magasságot:
- Szöveg és betűméret: a hosszabb szöveg, expliciten megadott sortörések vagy nagyobb betűméret több függőleges helyet igényelhet.
- Sortörés és oszlopszélesség: sortöréssel a Column.setWidth használatával csökkentve az oszlopszélességet több sor keletkezhet. Szélesebb oszlop csökkentheti a függőleges helyigényt.
- Cellamargók: a Cell.setMarginTop és a Cell.setMarginBottom függőleges helyet ad hozzá. A Cell.setMarginLeft és a Cell.setMarginRight csökkenti a szövegnek rendelkezésre álló szélességet, és további sortörést okozhat.
Egy összevonás nélküli táblázat esetén az a cella, amelyik a legtöbb függőleges helyet igényli, meghatározza az egész sor tartalom által vezérelt alsó határát. A sor rövidebbé tételéhez esetleg a szöveget kell rövidíteni, a betűméretet vagy a margókat csökkenteni, vagy egy oszlopot szélesíteni kell.
Az alábbi képek ugyanazt a táblázatot mutatják azonos méretben. A szemléltetett eredményekben a tényleges magasságok 70, 100 és 55,2 pont volt: az utolsó sor magasabb maradt a 20 pontos minimumánál. A pontos szövegméretek változhatnak a környezetben elérhető betűtípusok szerint. Töltse le a mentett eredményeket: increased minimum és decreased minimum.
| Eredeti: minimum 70 pt, tényleges 70 pt | Növelt: minimum 100 pt, tényleges 100 pt | Csökkentett: minimum 20 pt, tényleges 55.2 pt |
|---|---|---|
![]() |
![]() |
![]() |
Állítsa be az első sort fejlécként
Használja a setFirstRow metódust az első sor fejléceként való megjelöléséhez. Megjelenése a táblára alkalmazott táblastílustól függ.
- Töltse be a prezentációt a Presentation osztállyal.
- Hozza el az első diát.
- Hozza el a dián az első alakzatként tárolt táblázatot.
- Engedélyezze a fejlécre formázást az első sorban.
- Mentse el a módosított prezentációt.
A példához table.pptx szükséges, amelyben a táblázat az első dián az első alakzat. Engedélyezi a fejlécre formázást az első sorban, és elmenti a First_row_header.pptx fájlt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("table.pptx")
try:
slide = presentation.getSlides().get_Item(0)
table = slide.getShapes().get_Item(0)
table.setFirstRow(True)
presentation.save("First_row_header.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Klónozzon táblázat sort vagy oszlopot
Klónozzon sorokat vagy oszlopokat a tartalmuk és formázásuk újrafelhasználásához. Másolatot fűzhet a táblázat végéhez, vagy beszúrhatja egy adott pozícióba.
- Töltse be a prezentációt a Presentation osztállyal.
- Hozza el az első diát.
- Definiálja az oszlopszélességeket és sormagasságokat.
- Adjon hozzá egy táblázatot a addTable metódussal.
- Klónozza a szükséges sorokat.
- Klónozza a szükséges oszlopokat.
- Mentse el a módosított prezentációt.
A példához Test.pptx szükséges, amelyen legalább egy dia van. Létrehoz egy táblázatot három oszloppal és öt sorral, a méreteket pontban megadva. Az első sort és oszlopot másolatként hozzáfűzi, majd a második sort és oszlopot a 3-as indexen (a negyedik pozíció) beszúrja. Az eredményül kapott táblázat hét sort és öt oszlopot tartalmaz. A False argumentum letiltja a klónozást a szomszédos összevont sorokra vagy oszlopokra; ez a táblázat nem tartalmaz összevont cellákat.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("Test.pptx")
try:
slide = presentation.getSlides().get_Item(0)
column_widths = jpype.JArray(jpype.JDouble)([50, 50, 50])
row_heights = jpype.JArray(jpype.JDouble)([50, 30, 30, 30, 30])
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
table.get_Item(0, 0).getTextFrame().setText("Row 1 Cell 1")
table.get_Item(1, 0).getTextFrame().setText("Row 1 Cell 2")
table.getRows().addClone(table.getRows().get_Item(0), False)
table.get_Item(0, 1).getTextFrame().setText("Row 2 Cell 1")
table.get_Item(1, 1).getTextFrame().setText("Row 2 Cell 2")
table.getRows().insertClone(3, table.getRows().get_Item(1), False)
table.getColumns().addClone(table.getColumns().get_Item(0), False)
table.getColumns().insertClone(3, table.getColumns().get_Item(1), False)
presentation.save("table_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Sor vagy oszlop eltávolítása a táblázatból
Távolítson el sorokat vagy oszlopokat, amelyek már nem szükségesek a táblázatban. Egy elem eltávolítása eltolja a mögötte következő sorok vagy oszlopok indexeit.
- Hozzon létre egy prezentációt a Presentation osztállyal.
- Hozza el az első diát.
- Definiálja az oszlopszélességeket és sormagasságokat.
- Adjon hozzá egy táblázatot a addTable metódussal.
- Távolítsa el a második sort és a második oszlopot.
- Mentse el a módosított prezentációt.
Ez a példa egy három‑háromas táblázatot hoz létre, és eltávolítja az 1‑es indexű sort és oszlopot, így egy kétszer‑két méretű táblázat marad a TestTable_out.pptx fájlban. A méretek pontban vannak megadva. A False argumentum letiltja a szomszédos összevont sorok vagy oszlopok eltávolítását; ez a táblázat nem tartalmaz összevont cellákat.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
column_widths = jpype.JArray(jpype.JDouble)([100, 50, 30])
row_heights = jpype.JArray(jpype.JDouble)([30, 50, 30])
table = slide.getShapes().addTable(100, 100, column_widths, row_heights)
table.getRows().removeAt(1, False)
table.getColumns().removeAt(1, False)
presentation.save("TestTable_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Szövegformázás beállítása a táblázat sor szintjén
Alkalmazzon szövegformázást egy teljes sorra, hogy a cellák egységesek legyenek. Beállíthat betűtulajdonságokat, bekezdésformázást és szövegirányt anélkül, hogy minden cellát egyenként formázna.
- Töltse be a prezentációt a Presentation osztállyal.
- Hozza el a táblázatot az első dián.
- Használja a setFontHeight metódust az első sorra.
- Használja a setAlignment és a setMarginRight metódusokat az első sorra.
- Használja a setTextVerticalType metódust a második sorra.
- Mentse el a módosított prezentációt.
A példához table.pptx szükséges, amelyben a táblázat az első dián az első alakzat, és legalább két sor van. Az első sorra 25 pontos szöveget, jobb oldali igazítást és 20 pontos jobb bekezdésmargót alkalmaz, majd a második sorra függőleges szöveget állít be.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, PortionFormat, ParagraphFormat, TextFrameFormat, TextAlignment, TextVerticalType
presentation = Presentation("table.pptx")
try:
slide = presentation.getSlides().get_Item(0)
table = slide.getShapes().get_Item(0)
portion_format = PortionFormat()
portion_format.setFontHeight(25)
table.getRows().get_Item(0).setTextFormat(portion_format)
paragraph_format = ParagraphFormat()
paragraph_format.setAlignment(TextAlignment.Right)
paragraph_format.setMarginRight(20)
table.getRows().get_Item(0).setTextFormat(paragraph_format)
text_frame_format = TextFrameFormat()
text_frame_format.setTextVerticalType(TextVerticalType.Vertical)
table.getRows().get_Item(1).setTextFormat(text_frame_format)
presentation.save("row_formatting.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Szövegformázás beállítása a táblázat oszlop szintjén
Alkalmazzon szövegformázást egy teljes oszlopra, hogy a cellák egységesek legyenek. Beállíthat betűtulajdonságokat, bekezdésformázást és szövegirányt anélkül, hogy minden cellát egyenként formázna.
- Töltse be a prezentációt a Presentation osztállyal.
- Hozza el a táblázatot az első dián.
- Használja a setFontHeight metódust az első oszlopra.
- Használja a setAlignment és a setMarginRight metódusokat az első oszlopra.
- Használja a setTextVerticalType metódust a második oszlopra.
- Mentse el a módosított prezentációt.
A példához table.pptx szükséges, amelyben a táblázat az első dián az első alakzat, és legalább két oszlop van. Az első oszlopra 25 pontos szöveget, jobb oldali igazítást és 20 pontos jobb bekezdésmargót alkalmaz, majd a második oszlopra függőleges szöveget állít be.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, PortionFormat, ParagraphFormat, TextFrameFormat, TextAlignment, TextVerticalType
presentation = Presentation("table.pptx")
try:
slide = presentation.getSlides().get_Item(0)
table = slide.getShapes().get_Item(0)
portion_format = PortionFormat()
portion_format.setFontHeight(25)
table.getColumns().get_Item(0).setTextFormat(portion_format)
paragraph_format = ParagraphFormat()
paragraph_format.setAlignment(TextAlignment.Right)
paragraph_format.setMarginRight(20)
table.getColumns().get_Item(0).setTextFormat(paragraph_format)
text_frame_format = TextFrameFormat()
text_frame_format.setTextVerticalType(TextVerticalType.Vertical)
table.getColumns().get_Item(1).setTextFormat(text_frame_format)
presentation.save("column_formatting.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Táblázat stílusjellemzőinek lekérése
Használja a getStylePreset metódust egy táblázatra alkalmazott előbeállított stílus lekéréséhez és egy másik táblázaton való újrafelhasználásához. Ez az előbeállítást azonosítja az egyedi cellaformázási felülírások helyett.
A példa létrehoz egy táblázatot, alkalmazza a TableStylePreset.DarkStyle1 előbeállítást, és visszaolvassa azt. Kiírja a DarkStyle1‑nek megfelelő egészértéket, majd elmenti a táblázatot a table.pptx fájlba.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TableStylePreset
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
column_widths = jpype.JArray(jpype.JDouble)([100, 150])
row_heights = jpype.JArray(jpype.JDouble)([5, 5, 5])
table = slide.getShapes().addTable(10, 10, column_widths, row_heights)
table.setStylePreset(TableStylePreset.DarkStyle1)
style_preset = table.getStylePreset()
print(style_preset)
presentation.save("table.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
FAQ
Alkalmazhatok PowerPoint témákat/stílusokat egy már létrehozott táblázatra?
Igen. A táblázat örökli a dia/elrendezés/mester téma beállításait, és továbbra is felülírhatja a kitöltéseket, a szegélyeket és a szövegszíneket a téma felett.
Rendezhetem a táblázat sorait, mint az Excelben?
Nem, az Aspose.Slides táblázatok nem rendelkeznek beépített rendezéssel vagy szűrőkkel. Rendezze először az adatokat a memóriában, majd töltse újra a táblázat sorait ebben a sorrendben.
Lehet színezett (csíkos) oszlopaim, miközben egyes cellákra egyedi színeket tartok?
Igen. Kapcsolja be a csíkos oszlopokat, majd felülírja a konkrét cellákat helyi formázással; a cellaszintű formázás felülbírálja a táblastílust.


