Prezentációs táblázatok kezelése Java nyelven
Bevezetés
A táblázatok a PowerPointban információkat sorokba és oszlopokba szerveznek, megkönnyítve az értékek olvasását és összehasonlítását.
Az Aspose.Slides biztosítja a Table osztályt, az ITable interfészt, a Cell osztályt, az ICell interfészt és egyéb típusokat, hogy táblázatokat hozhasson létre, frissíthessen és kezelhessen a prezentációkban.
Táblázat létrehozása a semmiből
Hozzon létre egy táblázatot a pozíció, az oszlopszélességek és a sormagasságok megadásával. A diára történő hozzáadás után formázhatja a cellaszegélyeket, egyesítheti a cellákat, és szöveget vihet be.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze be a diát az indexe alapján.
- Határozzon meg egy pontokban megadott oszlopszélességek tömbjét.
- Határozzon meg egy pontokban megadott sormagasságok tömbjét.
- Adjon hozzá egy ITable objektumot a diához a addTable metódus segítségével.
- Iteráljon végig minden ICell elemen a felső, alsó, jobb és bal szegély formázásához.
- Egyesítse a táblázat első sorának első két celláját.
- Érje el az egyesített cellát a getTextFrame metódusával.
- Állítsa be a szöveget az egyesített cellában.
- Mentse a módosított prezentációt.
A lenti példa egy három oszlopos és öt soros táblázatot hoz létre (100, 50) pont helyen. Piros szegélyeket alkalmaz 5 pont szélességgel, egyesíti az első sor első két celláját, és a végeredményt table.pptx néven menti.
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = { 50, 50, 50 };
double[] rowHeights = { 50, 30, 30, 30, 30 };
ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);
for (IRow row : table.getRows())
{
for (ICell cell : row)
{
ICellFormat cellFormat = cell.getCellFormat();
cellFormat.getBorderTop().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderTop().setWidth(5);
cellFormat.getBorderBottom().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderBottom().setWidth(5);
cellFormat.getBorderLeft().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderLeft().setWidth(5);
cellFormat.getBorderRight().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderRight().setWidth(5);
}
}
table.mergeCells(table.get_Item(0, 0), table.get_Item(1, 0), false);
table.get_Item(0, 0).getTextFrame().setText("Merged Cells");
presentation.save("table.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Számozás egy szabványos táblázatban
Egy szabványos táblázatban a cella indexek nullaalapúak, és (oszlop, sor) sorrendet követnek. Az első cella indexe (0, 0).
Például egy 4 oszlopos és 4 soros táblázat cellái így 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 a fent ábrázolt 4 × 4-es táblázatot hozza létre, 70 pont széles oszlopszélességekkel és sormagasságokkal, valamint 5 pont széles piros cellaszegélyekkel. A koordináták a cella indexeket mutatják; a példa üresen hagyja a cellákat, és a táblázatot StandardTables_out.pptx néven menti.
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = { 70, 70, 70, 70 };
double[] rowHeights = { 70, 70, 70, 70 };
ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);
for (IRow row : table.getRows())
{
for (ICell cell : row)
{
ICellFormat cellFormat = cell.getCellFormat();
cellFormat.getBorderTop().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderTop().setWidth(5);
cellFormat.getBorderBottom().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderBottom().setWidth(5);
cellFormat.getBorderLeft().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderLeft().setWidth(5);
cellFormat.getBorderRight().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderRight().setWidth(5);
}
}
presentation.save("StandardTables_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Meglévő táblázat elérése
A táblázatok a dia alakzatgyűjteményében tárolódnak. Iteráljon az alakzatokon, hogy megtalálja a táblázatot, majd használja az ITable interfészt a cellák olvasásához vagy frissítéséhez.
- Töltse be a prezentációt a Presentation osztály segítségével.
- Szerezze meg a táblázatot tartalmazó dia referenciáját az indexe alapján.
- Iteráljon a IShape objektumokon, és álljon meg, amikor táblázatot talál. Ha a dián több táblázat is van, használja a getAlternativeText metódust a szükséges azonosításához.
- Frissítse a célcella szövegét.
- Mentse a módosított prezentációt.
A lenti 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 értékre állítja, és az eredményt table1_out.pptx néven menti. A bemeneti fájlnak legalább egy diát kell tartalmaznia, és az első táblázatnak legalább egy oszlopot és két sort.
import com.aspose.slides.*;
Presentation presentation = new Presentation("UpdateExistingTable.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = null;
for (IShape shape : slide.getShapes()) {
if (shape instanceof ITable) {
table = (ITable) shape;
break;
}
}
if (table != null) {
table.get_Item(0, 1).getTextFrame().setText("New");
presentation.save("table1_out.pptx", SaveFormat.Pptx);
}
} finally {
presentation.dispose();
}
Ha egy meglévő táblázat sorát szeretné átméretezni, és meg akarja érteni, miért lehet a tényleges magasság nagyobb a kért minimumnál, lásd a Sor magasságának szabályozása oldalt.
Keresse meg a szövegtáblát tartalmazó cellát
Amikor egy általános szövegfeldolgozó kód egy ITextFrame objektumot kap egy táblázatból, használja az ITextFrame.getParentCell metódust a tulajdonos ICell lekéréséhez. Egy táblázat‑cella szövegtáblánál az ITextFrame.getParentCell visszaadja a tulajdonost, míg az ITextFrame.getParentShape null‑t ad, annak ellenére, hogy maga a táblázat is egy alakzat.
A cellakoordináták a csak‑olvasásra szóló ICell.getFirstColumnIndex és ICell.getFirstRowIndex metódusokkal érhetők el. Az ITextFrame.getParentCell szintén csak‑olvasási navigációt biztosít: visszaadja a tulajdonost, de nem módosítja a tulajdonjogot. Mindig ellenőrizze, hogy a visszakapott cella null‑e, mielőtt felhasználná.
A teljes példáért, amely azonosítja a táblázat‑cella és alakzat tulajdonosait, beleértve a SmartArt csomópontokhoz kapcsolódó alakzatokat, lásd a Keresés és csere szöveg oldalt.
Szöveg igazítása egy táblázatban
Egyes táblázatcella függőleges rögzítését és szövegirányát vezérelheti. E szakaszban szereplő példa a szöveget a első cellában középre igazítja, és 270 fokkal elforgatja.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg a dia referencia értékét az index alapján.
- Adjon hozzá egy ITable objektumot a diához.
- Érje el a táblázatból egy ITextFrame objektumot.
- Érje el az első IParagraph objektumot, és állítsa be a szövegét és színét.
- Állítsa be a cella függőleges rögzítését és a szövegirányt a setTextAnchorType és a setTextVerticalType segítségével.
- Mentse a módosított prezentációt.
Ez a példa egy 4 × 4-es táblázatot hoz létre, 120 pont széles oszlopszélességekkel és 100 pont magas sorokkal. Formázza a (0, 0) cella szövegét, értékeket ad a első sor többi cellájához, és a végeredményt Vertical_Align_Text_out.pptx néven menti.
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = { 120, 120, 120, 120 };
double[] rowHeights = { 100, 100, 100, 100 };
ITable table = slide.getShapes().addTable(100, 50, columnWidths, rowHeights);
table.get_Item(1, 0).getTextFrame().setText("10");
table.get_Item(2, 0).getTextFrame().setText("20");
table.get_Item(3, 0).getTextFrame().setText("30");
ITextFrame textFrame = table.get_Item(0, 0).getTextFrame();
IParagraph paragraph = textFrame.getParagraphs().get_Item(0);
IPortion portion = paragraph.getPortions().get_Item(0);
portion.setText("Text here");
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
ICell cell = table.get_Item(0, 0);
cell.setTextAnchorType(TextAnchorType.Center);
cell.setTextVerticalType(TextVerticalType.Vertical270);
presentation.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Szövegformázás beállítása táblázati szinten
A setTextFormat használatával szövegformázást alkalmazhat a táblázat minden cellájára. A túlterhelései részek, bekezdés és szövegtáblázat formázását fogadják, így ezek a tulajdonságok egyenkénti cellák iterálása nélkül állíthatók be.
- Töltse be a prezentációt a Presentation osztály segítségével.
- Szerezze meg a dia referencia értékét az index alapján.
- Érje el a dián egy ITable objektumot.
- Állítsa be a betűméretet a setFontHeight metódussal a szöveghez.
- Állítsa be a bekezdés igazítását és a jobb margót a setAlignment és a setMarginRight segítségével.
- Állítsa be a szöveg irányát a setTextVerticalType metódussal.
- Mentse a módosított prezentációt.
A lenti példa megnyitja a table.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, ahol a táblázat az első alakzat. A betűméretet 25 pontra állítja, a bekezdéseket jobbra igazítja 20 pont jobb margóval, és függőlegessé teszi a szöveget. A formázott prezentáció result.pptx néven kerül mentésre.
import com.aspose.slides.*;
Presentation presentation = new Presentation("table.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable) slide.getShapes().get_Item(0);
PortionFormat portionFormat = new PortionFormat();
portionFormat.setFontHeight(25);
table.setTextFormat(portionFormat);
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.setAlignment(TextAlignment.Right);
paragraphFormat.setMarginRight(20);
table.setTextFormat(paragraphFormat);
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
table.setTextFormat(textFrameFormat);
presentation.save("result.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Táblázat stílus tulajdonságainak lekérése
Használja a getStylePreset metódust egy táblázat előre beállított stílusának lekéréséhez, és a setStylePreset metódust annak beállításához. Ez a példa egy táblázatra alkalmazza a TableStylePreset.DarkStyle1 stílust, kiírja az előre beállított értéket, majd ugyanazt a stílust a második táblázatra is beállítja. Mindkét táblázat a table-style.pptx fájlban kerül mentésre.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] columnWidths = { 100, 150 };
double[] rowHeights = { 5, 5, 5 };
ITable table = slide.getShapes().addTable(10, 10, columnWidths, rowHeights);
table.setStylePreset(TableStylePreset.DarkStyle1);
int stylePreset = table.getStylePreset();
System.out.println("Table style preset: " + stylePreset);
ITable anotherTable = slide.getShapes().addTable(10, 100, columnWidths, rowHeights);
anotherTable.setStylePreset(stylePreset);
presentation.save("table-style.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Táblázat képarányának zárolása
Egy táblázat képaránya a szélesség és a magasság aránya. A setAspectRatioLocked használatával zárolhatja ezt az arányt a táblázat számára.
A lenti példa megnyitja a pres.pptx fájlt, amelynek legalább egy diát kell tartalmaznia, ahol a táblázat az első alakzat. Kiírja a jelenlegi zárási állapotot, engedélyezi a képarány zárolását, kiírja a frissített állapotot (true), majd a végeredményt pres-out.pptx néven menti.
import com.aspose.slides.*;
Presentation presentation = new Presentation("pres.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ITable table = (ITable) slide.getShapes().get_Item(0);
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
table.getGraphicalObjectLock().setAspectRatioLocked(true);
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
presentation.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
GYIK
Engedélyezhetem a jobbról balra (RTL) olvasási irányt egy teljes táblázatra és a celláiban lévő szövegre?
Igen. A táblázat a setRightToLeft metódust biztosítja, a bekezdéseknek pedig a ParagraphFormat.setRightToLeft metódusa van. Mindkettő használata biztosítja a helyes RTL sorrendet és megjelenítést a cellákon belül.
Hogyan akadályozhatom meg, hogy a felhasználók a kész fájlban mozgatni vagy átméretezni a táblázatot?
Használja a alakzat zárolások funkciót a mozgatás, átméretezés, kiválasztá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. Egy cellához beállíthat egy picture fill kitöltést; a kép a kiválasztott mód (nyújtás vagy csempézés) szerint lefedi a cellaterületet.