PowerPoint táblázatok kezelése PHP-ben
Bevezetés
A PowerPoint táblázat egy hatékony módja az információk megjelenítésének és ábrázolásának. A cellák rácsában (sorok és oszlopok szerint rendezve) lévő információ egyértelmű és könnyen érthető.
Az Aspose.Slides a Table osztályt, a Cell osztályt és egyéb típusokat biztosít, amelyek lehetővé teszik táblázatok létrehozását, módosítását és kezelését mindenféle prezentációban.
Táblázat létrehozása nulláról
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg egy dia hivatkozását az indexe alapján.
- Definiáljon egy
columnWidthtömböt. - Definiáljon egy
rowHeighttömböt. - Adjon egy Table objektumot a diára a addTable metódussal.
- Iteráljon végig minden Cell elemen, hogy alkalmazza a felső, alsó, jobb és bal szegélyek formázását.
- Egyesítse a táblázat első sorának első két celláját.
- Érje el egy Cell TextFrame objektumát.
- Adjon szöveget a TextFrame objektumhoz.
- Mentse a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan hozhat létre táblázatot egy prezentációban:
# PPTX fájlt képviselő Presentation osztály példányosítása
$pres = new Presentation();
try {
# Első dia elérése
$sld = $pres->getSlides()->get_Item(0);
# Oszlopok definiálása szélességekkel és sorok magasságokkal
$dblCols = array(50, 50, 50 );
$dblRows = array(50, 30, 30, 30, 30 );
# Táblázat alakzat hozzáadása a diára
$tbl = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
# A cellák szegélyformátumának beállítása
for($row = 0; $row < java_values($tbl->getRows()->size()) ; $row++) {
for($cell = 0; $cell < java_values($tbl->getRows()->get_Item($row)->size()) ; $cell++) {
$cellFormat = $tbl->getRows()->get_Item($row)->get_Item($cell)->getCellFormat();
$cellFormat::getBorderTop()->getFillFormat()->setFillType(FillType::Solid);
$cellFormat::getBorderTop()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cellFormat::getBorderTop()->setWidth(5);
$cellFormat::getBorderBottom()->getFillFormat()->setFillType(FillType::Solid);
$cellFormat::getBorderBottom()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cellFormat::getBorderBottom()->setWidth(5);
$cellFormat::getBorderLeft()->getFillFormat()->setFillType(FillType::Solid);
$cellFormat::getBorderLeft()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cellFormat::getBorderLeft()->setWidth(5);
$cellFormat::getBorderRight()->getFillFormat()->setFillType(FillType::Solid);
$cellFormat::getBorderRight()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cellFormat::getBorderRight()->setWidth(5);
}
}
# Az első sor első és második cellájának egyesítése
$tbl->mergeCells($tbl->getRows()->get_Item(0)->get_Item(0), $tbl->getRows()->get_Item(1)->get_Item(1), false);
# Szöveg hozzáadása az egyesített cellához
$tbl->getRows()->get_Item(0)->get_Item(0)->getTextFrame()->setText("Merged Cells");
# A prezentáció mentése a lemezre
$pres->save("table.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Számozás egy szabványos táblázatban
Egy szabványos táblázatban a cellák számozása egyszerű és nulláral kezdődik. A táblázat első cellájának indexe 0,0 (oszlop 0, sor 0).
Például egy 4 oszlopos és 4 soros táblázat cellái a következő módon 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 PHP kód bemutatja, hogyan adhatja meg a cellák számozását egy táblázatban:
# PPTX fájlt képviselő Presentation osztály példányosítása
$pres = new Presentation();
try {
# Első dia elérése
$sld = $pres->getSlides()->get_Item(0);
# Oszlopok definiálása szélességekkel és sorok magasságokkal
$dblCols = array(70, 70, 70, 70 );
$dblRows = array(70, 70, 70, 70 );
# Táblázat alakzat hozzáadása a diára
$tbl = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
# A cellák szegélyformátumának beállítása
$rows = $tbl->getRows();
foreach($rows as $row) {
foreach($row as $cell) {
$cell->getCellFormat()->getBorderTop()->getFillFormat()->setFillType(FillType::Solid);
$cell->getCellFormat()->getBorderTop()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cell->getCellFormat()->getBorderTop()->setWidth(5);
$cell->getCellFormat()->getBorderBottom()->getFillFormat()->setFillType(FillType::Solid);
$cell->getCellFormat()->getBorderBottom()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cell->getCellFormat()->getBorderBottom()->setWidth(5);
$cell->getCellFormat()->getBorderLeft()->getFillFormat()->setFillType(FillType::Solid);
$cell->getCellFormat()->getBorderLeft()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cell->getCellFormat()->getBorderLeft()->setWidth(5);
$cell->getCellFormat()->getBorderRight()->getFillFormat()->setFillType(FillType::Solid);
$cell->getCellFormat()->getBorderRight()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
$cell->getCellFormat()->getBorderRight()->setWidth(5);
}
}
# A prezentáció mentése a lemezre
$pres->save("StandardTables_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Létező táblázat elérése
-
Hozzon létre egy példányt a Presentation osztályból.
-
Szerezze meg a táblázatot tartalmazó dia hivatkozását az indexe alapján.
-
Hozzon létre egy Table objektumot, és állítsa null-ra.
-
Iteráljon végig az összes Shape objektumon, amíg meg nem találja a táblázatot.
Ha úgy gondolja, hogy a dia csak egy táblázatot tartalmaz, egyszerűen ellenőrizze az összes benne lévő alakzatot. Amikor egy alakzatot táblázatként azonosít, típuskonvertálhatja Table objektummá. Ha a dia több táblázatot tartalmaz, érdemes a kívánt táblázatot a setAlternativeText(String value) segítségével keresni.
-
Használja a Table objektumot a táblázattal való munkához. Az alábbi példában egy új sort adtunk a táblázathoz.
-
Mentse a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan érheti el és dolgozhat egy létező táblázattal:
# PPTX fájlt képviselő Presentation osztály példányosítása
$pres = new Presentation("UpdateExistingTable.pptx");
try {
# Első dia elérése
$sld = $pres->getSlides()->get_Item(0);
# null TableEx inicializálása
$tbl = null;
# Az alakzatok iterálása és a megtalált táblázatra mutató hivatkozás beállítása
$shapes = $sld->getShapes();
foreach($shapes as $shp) {
if (java_instanceof($shp, new JavaClass("com.aspose.slides.Table"))) {
$tbl = $shp;
# A második sor első oszlopának szövegének beállítása
$tbl->get_Item(0, 1)->getTextFrame()->setText("New");
}
}
# A módosított prezentáció mentése a lemezre
$pres->save("table1_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
A szövegkeretet tartalmazó cella megtalálása
Amikor általános szövegfeldolgozó kód egy TextFrame objektumot kap egy táblázatból, használja a TextFrame::getParentCell metódust a tulajdonos Cell lekérdezéséhez. Egy táblázatcella szövegkeret esetén a TextFrame::getParentCell visszaadja a tulajdonost, a TextFrame::getParentShape pedig null értéket, annak ellenére, hogy a táblázat maga egy alakzat.
A cella koordinátái a csak olvasható Cell::getFirstColumnIndex és Cell::getFirstRowIndex metódusokon keresztül érhetők el. A TextFrame::getParentCell szintén csak olvasható navigációt biztosít: visszaadja a tulajdonost, de nem változtatja meg a tulajdonjogot. Mindig ellenőrizze a visszakapott cellát java_is_null segítségével, mielőtt használná.
A teljes példáért, amely azonosítja a táblázatcella és alakzat tulajdonosait, beleértve a SmartArt csomópontokhoz tartozó alakzatokat, lásd a Search and Replace Text oldalt.
Szöveg igazítása egy táblázatban
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg egy dia hivatkozását az indexe alapján.
- Adjon egy Table objektumot a diára.
- Érje el a táblázatból egy TextFrame objektumot.
- Hozzáférjen a Paragraph objektumhoz.
- Igazítsa a szöveget függőlegesen.
- Mentse a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan igazíthatja a szöveget egy táblázatban:
# Példányosítja a Presentation osztályt
$pres = new Presentation();
try {
# Első dia lekérése
$slide = $pres->getSlides()->get_Item(0);
# Oszlopok definiálása szélességekkel és sorok magasságokkal
$dblCols = array(120, 120, 120, 120 );
$dblRows = array(100, 100, 100, 100 );
# A táblázat alakzat hozzáadása a diára
$tbl = $slide->getShapes()->addTable(100, 50, $dblCols, $dblRows);
$tbl->get_Item(1, 0)->getTextFrame()->setText("10");
$tbl->get_Item(2, 0)->getTextFrame()->setText("20");
$tbl->get_Item(3, 0)->getTextFrame()->setText("30");
# A szövegkeret elérése
$txtFrame = $tbl->get_Item(0, 0)->getTextFrame();
# Létrehozza a Paragraph objektumot a szövegkerethez
$paragraph = $txtFrame->getParagraphs()->get_Item(0);
# Létrehozza a Portion objektumot a bekezdéshez
$portion = $paragraph->getPortions()->get_Item(0);
$portion->setText("Text here");
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
$portion->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
# Függőleges szövegigazítás
$cell = $tbl->get_Item(0, 0);
$cell->setTextAnchorType(TextAnchorType::Center);
$cell->setTextVerticalType(TextVerticalType::Vertical270);
# A prezentáció mentése a lemezre
$pres->save("Vertical_Align_Text_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Szövegformázás beállítása a táblázati szinten
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg egy dia hivatkozását az indexe alapján.
- Érje el a Table objektumot a diáról.
- Állítsa be a szöveg setFontHeight(float value) értékét.
- Állítsa be a setAlignment(int value) és setMarginRight(float value) értékeket.
- Állítsa be a setTextVerticalType(byte value) értéket.
- Mentse a módosított prezentációt.
Ez a PHP kód bemutatja, hogyan alkalmazhatja a kívánt formázási beállításokat a táblázat szövegére:
# Létrehozza a Presentation osztály egy példányát
$pres = new Presentation("simpletable.pptx");
try {
# Tegyük fel, hogy az első dián az első alakzat egy táblázat
$someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Beállítja a táblázat celláinak betűmagasságát
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(25);
$someTable->setTextFormat($portionFormat);
# Beállítja a táblázat celláinak szövegigazítását és jobb margóját egy hívással
$paragraphFormat = new ParagraphFormat();
$paragraphFormat::setAlignment(TextAlignment->Right);
$paragraphFormat::setMarginRight(20);
$someTable->setTextFormat($paragraphFormat);
# Beállítja a táblázat celláinak függőleges szöveg típusát
$textFrameFormat = new TextFrameFormat();
$textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
$someTable->setTextFormat($textFrameFormat);
$pres->save("result.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Táblázat stílus tulajdonságainak lekérése
Az Aspose.Slides lehetővé teszi a táblázat stílus tulajdonságainak lekérését, hogy ezeket a részleteket felhasználhassa egy másik táblázathoz vagy máshová. Ez a PHP kód megmutatja, hogyan kérhető le egy táblázat előre definiált stílusának tulajdonságai:
$pres = new Presentation();
try {
$table = $pres->getSlides()->get_Item(0)->getShapes()->addTable(10, 10, array(100, 150 ), array(5, 5, 5 ));
$table->setStylePreset(TableStylePreset->DarkStyle1);// megváltoztatja az alapértelmezett stílus előbeállított témát
$pres->save("table.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
A táblázat képarányának zárolása
A geometriai alakzat képaránya a különböző dimenziók méretének aránya. Az Aspose.Slides a setAspectRatioLocked metódust biztosítja, amely lehetővé teszi a képarány beállításának zárolását táblázatok és egyéb alakzatok esetén.
Ez a PHP kód bemutatja, hogyan zárolható a képarány egy táblázathoz:
$pres = new Presentation("pres.pptx");
try {
$table = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
echo("Lock aspect ratio set: " . $table->getGraphicalObjectLock()->getAspectRatioLocked());
$table->getGraphicalObjectLock()->setAspectRatioLocked(!$table->getGraphicalObjectLock()->getAspectRatioLocked());// invertálja
echo("Lock aspect ratio set: " . $table->getGraphicalObjectLock()->getAspectRatioLocked());
$pres->save("pres-out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
GYIK
Engedélyezhetek jobbról balra (RTL) olvasási irányt egy teljes táblázat és annak celláiban lévő szöveg számára?
Igen. A táblázat rendelkezik a setRightToLeft metódussal, a bekezdések pedig a ParagraphFormat::setRightToLeft metódussal. Mindkettő használata biztosítja a helyes RTL sorrendet és a megjelenítést a cellákon belül.
Hogyan akadályozhatom meg a felhasználókat, hogy a végső fájlban mozogassák vagy átméretezzék a táblázatot?
Használjon alakzatzárakat a mozgatás, átméretezés, kijelölés stb. letiltásához. Ezek a zárak a táblázatokra is vonatkoznak.
Támogatott-e egy kép beillesztése cellába háttérként?
Igen. Beállíthat egy picture fill formátumot egy cellához; a kép a választott módnak megfelelően (nyújtás vagy mozaik) fogja kitölteni a cellát.