Διαχείριση Πινάκων Παρουσίασης σε PHP
Εισαγωγή
Ένας πίνακας στο PowerPoint είναι ένας αποδοτικός τρόπος παρουσίασης και απεικόνισης πληροφοριών. Οι πληροφορίες σε ένα πλέγμα κυττάρων (διατεταγμένα σε σειρές και στήλες) είναι απλές και εύκολες στην κατανόηση.
Το Aspose.Slides παρέχει την κλάση Table, την κλάση Cell και άλλους τύπους ώστε να μπορείτε να δημιουργείτε, ενημερώνετε και διαχειρίζεστε πίνακες σε κάθε είδους παρουσιάσεις.
Δημιουργία Πίνακα από την αρχή
- Δημιουργήστε ένα αντικείμενο της κλάσης Presentation.
- Αποκτήστε την αναφορά μιας διαφάνειας μέσω του δείκτη της.
- Ορίστε έναν πίνακα
columnWidth. - Ορίστε έναν πίνακα
rowHeight. - Προσθέστε ένα αντικείμενο Table στη διαφάνεια μέσω της μεθόδου addTable.
- Επαναλάβετε για κάθε Cell ώστε να εφαρμόσετε μορφοποίηση στα άνω, κάτω, δεξιά και αριστερά σύνορα.
- Συγχωνεύστε τα πρώτα δύο κελιά της πρώτης σειράς του πίνακα.
- Αποκτήστε πρόσβαση στο TextFrame ενός Cell.
- Προσθέστε κείμενο στο TextFrame.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
# Δημιουργεί ένα αντικείμενο της κλάσης Presentation που αντιπροσωπεύει ένα αρχείο PPTX
$pres = new Presentation();
try {
# Προσπελαύνει την πρώτη διαφάνεια
$sld = $pres->getSlides()->get_Item(0);
# Ορίζει στήλες με πλάτη και σειρές με ύψη
$dblCols = array(50, 50, 50 );
$dblRows = array(50, 30, 30, 30, 30 );
# Προσθέτει ένα σχήμα πίνακα στη διαφάνεια
$tbl = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
# Ορίζει τη μορφοποίηση του περιγράμματος για κάθε κελί
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);
}
}
# Συγχωνεύει τα κελιά 1 και 2 της σειράς 1
$tbl->mergeCells($tbl->getRows()->get_Item(0)->get_Item(0), $tbl->getRows()->get_Item(1)->get_Item(1), false);
# Προσθέτει κάποιο κείμενο στο συγχωνευμένο κελί
$tbl->getRows()->get_Item(0)->get_Item(0)->getTextFrame()->setText("Merged Cells");
# Αποθηκεύει την παρουσίαση στο δίσκο
$pres->save("table.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Αρίθμηση σε Κανονικό Πίνακα
Σε έναν κανονικό πίνακα, η αρίθμηση των κελών είναι απλή και ξεκινά από το μηδέν. Το πρώτο κελί σε έναν πίνακα έχει δείκτη 0,0 (στήλη 0, σειρά 0).
Για παράδειγμα, τα κελιά σε έναν πίνακα με 4 στήλες και 4 σειρές αριθμούνται ως εξής:
| (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) |
Αυτός ο κώδικας PHP δείχνει πώς να καθορίσετε την αρίθμηση των κελιών σε έναν πίνακα:
# Δημιουργεί ένα αντικείμενο της κλάσης Presentation που αντιπροσωπεύει ένα αρχείο PPTX
$pres = new Presentation();
try {
# Προσπελαύνει την πρώτη διαφάνεια
$sld = $pres->getSlides()->get_Item(0);
# Ορίζει στήλες με πλάτη και σειρές με ύψη
$dblCols = array(70, 70, 70, 70 );
$dblRows = array(70, 70, 70, 70 );
# Προσθέτει σχήμα πίνακα στη διαφάνεια
$tbl = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
# Ορίζει τη μορφοποίηση του περιγράμματος για κάθε κελί
foreach($tbl->getRows() 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);
}
}
# Αποθηκεύει την παρουσίαση στο δίσκο
$pres->save("StandardTables_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Πρόσβαση σε Υπάρχον Πίνακα
-
Δημιουργήστε ένα αντικείμενο της κλάσης Presentation.
-
Αποκτήστε μια αναφορά στη διαφάνεια που περιέχει τον πίνακα μέσω του δείκτη της.
-
Δημιουργήστε ένα αντικείμενο Table και θέστε το σε null.
-
Επαναλάβετε σε όλα τα αντικείμενα Shape έως ότου βρεθεί ο πίνακας.
Αν υποψιάζεστε ότι η διαφάνεια που επεξεργάζεστε περιέχει έναν μόνο πίνακα, μπορείτε απλώς να ελέγξετε όλα τα σχήματα που περιέχει. Όταν ένα σχήμα αναγνωρίζεται ως πίνακας, μπορείτε να το μετατρέψετε σε αντικείμενο Table. Ωστόσο, εάν η διαφάνεια περιέχει πολλούς πίνακες, είναι προτιμότερο να ψάξετε για τον πίνακα που χρειάζεστε μέσω του setAlternativeText(String value).
-
Χρησιμοποιήστε το αντικείμενο Table για να εργαστείτε με τον πίνακα. Στο παρακάτω παράδειγμα, προσθέσαμε μια νέα σειρά στον πίνακα.
-
Αποθηκεύστε την τροποποιημένη παρουσίαση.
# Δημιουργεί μια κλάση Presentation που αντιπροσωπεύει ένα αρχείο PPTX
$pres = new Presentation("UpdateExistingTable.pptx");
try {
# Προσπελαύνει την πρώτη διαφάνεια
$sld = $pres->getSlides()->get_Item(0);
# Αρχικοποιεί το TableEx σε null
$tbl = null;
# Επανάληψη στα σχήματα και ορισμός αναφοράς στον ευρεθέντα πίνακα
foreach($sld->getShapes() as $shp) {
if (java_instanceof($shp, new JavaClass("com.aspose.slides.Table"))) {
$tbl = $shp;
# Ορίζει το κείμενο για την πρώτη στήλη της δεύτερης σειράς
$tbl->get_Item(0, 1)->getTextFrame()->setText("New");
}
}
# Αποθηκεύει την τροποποιημένη παρουσίαση στο δίσκο
$pres->save("table1_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Στοίχιση Κειμένου σε Πίνακα
- Δημιουργήστε ένα αντικείμενο της κλάσης Presentation.
- Αποκτήστε την αναφορά μιας διαφάνειας μέσω του δείκτη της.
- Προσθέστε ένα αντικείμενο Table στη διαφάνεια.
- Αποκτήστε πρόσβαση σε αντικείμενο TextFrame από τον πίνακα.
- Αποκτήστε πρόσβαση στο Paragraph.
- Στοίχιση του κειμένου κατακόρυφα.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
# Δημιουργεί ένα αντικείμενο της κλάσης Presentation
$pres = new Presentation();
try {
# Παίρνει την πρώτη διαφάνεια
$slide = $pres->getSlides()->get_Item(0);
# Ορίζει στήλες με πλάτη και σειρές με ύψη
$dblCols = array(120, 120, 120, 120 );
$dblRows = array(100, 100, 100, 100 );
# Προσθέτει το σχήμα πίνακα στη διαφάνεια
$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");
# Προσπελαύνει το πλαίσιο κειμένου
$txtFrame = $tbl->get_Item(0, 0)->getTextFrame();
# Δημιουργεί το αντικείμενο Paragraph για το πλαίσιο κειμένου
$paragraph = $txtFrame->getParagraphs()->get_Item(0);
# Δημιουργεί το αντικείμενο Portion για την παράγραφο
$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);
# Στοίχει το κείμενο κατακόρυφα
$cell = $tbl->get_Item(0, 0);
$cell->setTextAnchorType(TextAnchorType::Center);
$cell->setTextVerticalType(TextVerticalType::Vertical270);
# Αποθηκεύει την παρουσίαση στο δίσκο
$pres->save("Vertical_Align_Text_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Ορισμός Μορφοποίησης Κειμένου σε Επίπεδο Πίνακα
- Δημιουργήστε ένα αντικείμενο της κλάσης Presentation.
- Αποκτήστε την αναφορά μιας διαφάνειας μέσω του δείκτη της.
- Αποκτήστε πρόσβαση σε αντικείμενο Table από τη Διαφάνεια.
- Ορίστε το setFontHeight(float value) για το κείμενο.
- Ορίστε το setAlignment(int value) και το setMarginRight(float value).
- Ορίστε το setTextVerticalType(byte value).
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
# Δημιουργεί ένα αντικείμενο της κλάσης Presentation
$pres = new Presentation("simpletable.pptx");
try {
# Υποθέτουμε ότι το πρώτο σχήμα στην πρώτη διαφάνεια είναι πίνακας
$someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Ορίζει το ύψος γραμματοσειράς για τα κελιά του πίνακα
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(25);
$someTable->setTextFormat($portionFormat);
# Ορίζει την ευθυγράμμιση κειμένου και το δεξιό περιθώριο των κελιών του πίνακα με μία κλήση
$paragraphFormat = new ParagraphFormat();
$paragraphFormat::setAlignment(TextAlignment->Right);
$paragraphFormat::setMarginRight(20);
$someTable->setTextFormat($paragraphFormat);
# Ορίζει τον κάθετο τύπο κειμένου για τα κελιά του πίνακα
$textFrameFormat = new TextFrameFormat();
$textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
$someTable->setTextFormat($textFrameFormat);
$pres->save("result.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Ανάκτηση Ιδιοτήτων Στυλ Πίνακα
Το Aspose.Slides σας επιτρέπει να ανακτήσετε τις ιδιότητες στυλ για έναν πίνακα ώστε να μπορείτε να χρησιμοποιήσετε αυτές τις λεπτομέρειες για έναν άλλο πίνακα ή αλλού. Αυτός ο κώδικας PHP δείχνει πώς να λάβετε τις ιδιότητες στυλ από ένα προεγκατεστημένο στυλ πίνακα:
$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);// αλλάζει το προεπιλεγμένο στυλ
$pres->save("table.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Κλείδωμα Λόγου Αναλογίας Πίνακα
Ο λόγος αναλογίας ενός γεωμετρικού σχήματος είναι η αναλογία των διαστάσεών του σε διαφορετικές διαστάσεις. Το Aspose.Slides παρέχει τη μέθοδο setAspectRatioLocked ώστε να μπορείτε να κλειδώσετε τη ρύθμιση λόγου αναλογίας για πίνακες και άλλα σχήματα.
$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());// αντιστροφή
echo("Lock aspect ratio set: " . $table->getGraphicalObjectLock()->getAspectRatioLocked());
$pres->save("pres-out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Συχνές Ερωτήσεις
Μπορώ να ενεργοποιήσω την ανάγνωση από δεξιά προς τα αριστερά (RTL) για ολόκληρο τον πίνακα και το κείμενο στα κελιά του;
Ναι. Ο πίνακας εκθέτει τη μέθοδο setRightToLeft, και οι παράγραφοι διαθέτουν το ParagraphFormat::setRightToLeft. Η χρήση και των δύο εξασφαλίζει τη σωστή σειρά RTL και απόδοση εντός των κελιών.
Πώς μπορώ να εμποδίσω τους χρήστες να μετακινούν ή να αλλάζουν μέγεθος έναν πίνακα στο τελικό αρχείο;
Χρησιμοποιήστε κλειδώματα σχήματος για να απενεργοποιήσετε τη μετακίνηση, την αλλαγή μεγέθους, την επιλογή κ.λπ. Αυτά τα κλειδώματα εφαρμόζονται και στους πίνακες.
Υποστηρίζεται η προσθήκη μιας εικόνας μέσα σε ένα κελί ως φόντο;
Ναι. Μπορείτε να ορίσετε μια picture fill για ένα κελί· η εικόνα θα καλύψει την επιφάνεια του κελιού ανάλογα με την επιλεγμένη λειτουργία (τέντωμα ή επικάλυψη).