Java használatával táblacellák kezelése prezentációkban
Áttekintés
Az Aspose.Slides lehetővé teszi táblázatcellák elérését és módosítását a PowerPoint‑prezentációkban. Ez a cikk bemutatja, hogyan azonosíthatja az egyesített táblázatcellákat, hogyan távolíthatja el a cellaszegélyeket, hogyan kezelheti a cellaszámozást az egyesítés vagy felosztás után, hogyan változtathatja meg egy cella háttérszínét, és hogyan adhat hozzá képet egy táblázatcellához. A példák azt mutatják, hogyan hozhat létre vagy nyithat meg egy prezentációt, hogyan szerezhet be egy táblázatot egy diából, hogyan frissítheti a cellaformázást a cella‑tulajdonságokon keresztül, és hogyan mentheti a módosított prezentációt PPTX fájlként.
Egyesített táblázatcellák azonosítása
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg a táblázatot az első diáról.
- Iteráljon a táblázat sorain és oszlopain, hogy megtalálja az egyesített cellákat.
- Írjon ki üzenetet, amikor egyesített cellákat talál.
Ez a Java kód megmutatja, hogyan azonosíthatja az egyesített táblázatcellákat egy prezentációban:
Presentation pres = new Presentation("SomePresentationWithTable.pptx");
try {
ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0); // feltételezve, hogy a Slide#0.Shape#0 egy táblázat
for (int i = 0; i < table.getRows().size(); i++)
{
for (int j = 0; j < table.getColumns().size(); j++)
{
ICell currentCell = table.getRows().get_Item(i).get_Item(j);
if (currentCell.isMergedCell())
{
System.out.println(String.format("Cell %d;%d is a part of merged cell with RowSpan=%d and ColSpan=%d starting from Cell %d;%d.",
i, j, currentCell.getRowSpan(), currentCell.getColSpan(), currentCell.getFirstRowIndex(), currentCell.getFirstColumnIndex()));
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Táblacellaszegélyek eltávolítása
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg a diát a indexe alapján.
- Definiáljon egy oszlopok szélességét tartalmazó tömböt.
- Definiáljon egy sorok magasságát tartalmazó tömböt.
- Adjon hozzá egy táblázatot a diához az addTable módszerrel.
- Iteráljon minden cellán, hogy törölje a felső, alsó, jobb és bal szegélyeket.
- Mentse a módosított prezentációt PPTX fájlként.
Ez a Java kód megmutatja, hogyan távolítható el a szegély a táblacellákról:
// Példányosítja a Presentation osztályt, amely egy PPTX fájlt képvisel
Presentation pres = new Presentation();
try {
// Eléri az első diát
Slide sld = (Slide)pres.getSlides().get_Item(0);
// Definiálja az oszlopokat szélességekkel és a sorokat magasságokkal
double[] dblCols = { 50, 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// Hozzáad egy táblázat alakzatot a diához
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegélyformátumot minden cellához
for (IRow row : tbl.getRows())
{
for (ICell cell : row)
{
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.NoFill);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.NoFill);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.NoFill);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.NoFill);
}
}
// Kiírja a PPTX fájlt a lemezre
pres.save("table_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Számozás egyesített cellákban
Ha két cellapárt egyesítünk (1, 1) x (2, 1) és (1, 2) x (2, 2), a kapott táblázat számozott lesz. Ez a Java kód szemlélteti a folyamatot:
// Példányosítja a Presentation osztályt, amely egy PPTX fájlt képvisel
Presentation pres = new Presentation();
try {
// Eléri az első diát
ISlide sld = pres.getSlides().get_Item(0);
// Definiálja az oszlopokat szélességekkel és a sorokat magasságokkal
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Hozzáad egy táblázat alakzatot a diához
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegélyformátumot minden cellához
for (IRow row : tbl.getRows())
{
for (ICell cell : row)
{
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Egyesíti a (1, 1) x (2, 1) cellákat
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Egyesíti a (1, 2) x (2, 2) cellákat
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
pres.save("MergeCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ezután további egyesítést hajtunk végre a (1, 1) és (1, 2) cellák összevonásával. Az eredmény egy táblázat, amely közepén egy nagy egyesített cellát tartalmaz:
// Példányosítja a Presentation osztályt, amely egy PPTX fájlt képvisel
Presentation pres = new Presentation();
try {
// Eléri az első diát
ISlide sld = pres.getSlides().get_Item(0);
// Definiálja az oszlopokat szélességekkel és a sorokat magasságokkal
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Hozzáad egy táblázat alakzatot a diához
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegélyformátumot minden cellához
for (IRow row : tbl.getRows())
{
for (ICell cell : row)
{
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Egyesíti a (1, 1) x (2, 1) cellákat
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Egyesíti a (1, 2) x (2, 2) cellákat
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Egyesíti a (1, 1) x (1, 2) cellákat
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(1, 2), true);
// Kiírja a PPTX fájlt a lemezre
pres.save("MergeCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Számozás egy felosztott cellában
Az előző példákban, amikor a táblacellákat egyesítették, a többi cella számozása vagy számrendszere nem változott.
Ezúttal egy normál táblázatot (egy, egyesített cellákat nem tartalmazó táblát) használunk, majd megpróbáljuk felosztani az (1,1) cellát, hogy egy speciális táblát kapjunk. Érdemes figyelni erre a táblázat számozására, amely furcsának tűnhet. Azonban ez a Microsoft PowerPoint módja a táblacellák számozására, és az Aspose.Slides is ugyanezt teszi.
Ez a Java kód bemutatja a leírt folyamatot:
// Példányosítja a Presentation osztályt, amely egy PPTX fájlt képvisel
Presentation pres = new Presentation();
try {
// Eléri az első diát
ISlide sld = pres.getSlides().get_Item(0);
// Definiálja az oszlopokat szélességekkel és a sorokat magasságokkal
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Hozzáad egy táblázat alakzatot a diához
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegélyformátumot minden cellához
for (IRow row : tbl.getRows())
{
for (ICell cell : row)
{
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Egyesíti a (1, 1) x (2, 1) cellákat
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Egyesíti a (1, 2) x (2, 2) cellákat
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Felosztja a (1, 1) cellát
tbl.get_Item(1, 1).splitByWidth(tbl.get_Item(2, 1).getWidth() / 2);
// Kiírja a PPTX fájlt a lemezre
pres.save("SplitCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
A táblacellaháttér színének módosítása
Ez a Java kód megmutatja, hogyan változtatható meg egy táblacella háttérszíne:
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 50, 50, 50, 50, 50 };
// létrehoz egy új táblát
ITable table = slide.getShapes().addTable(50, 50, dblCols, dblRows);
// beállítja egy cella háttérszínét
ICell cell = table.get_Item(2, 3);
cell.getCellFormat().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getFillFormat().getSolidFillColor().setColor(Color.RED);
presentation.save("cell_background_color.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Kép hozzáadása egy táblacellába
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg a diát az indexe alapján.
- Definiáljon egy oszlopok szélességét tartalmazó tömböt.
- Definiáljon egy sorok magasságát tartalmazó tömböt.
- Adjon hozzá egy táblázatot a diához az AddTable módszerrel.
- Hozzon létre egy
Imagesobjektumot a kép fájl tárolására. - Adja hozzá az
IImageképet azIPPImageobjektumhoz. - Állítsa be a
FillFormatértékét a táblacelláhozPicture‑re. - Adja hozzá a képet a táblázat első cellájához.
- Mentse a módosított prezentációt PPTX fájlként
Ez a Java kód megmutatja, hogyan helyezzen el egy képet egy táblacellában táblázat létrehozásakor:
// Példányosítja a Presentation osztályt, amely egy PPTX fájlt képvisel
Presentation pres = new Presentation();
try {
// Eléri az első diát
ISlide islide = pres.getSlides().get_Item(0);
// Definiálja az oszlopokat szélességekkel és a sorokat magasságokkal
double[] dblCols = {150, 150, 150, 150};
double[] dblRows = {100, 100, 100, 100, 90};
// Hozzáad egy táblázat alakzatot a diához
ITable tbl = islide.getShapes().addTable(50, 50, dblCols, dblRows);
// Létrehoz egy IPPImage objektumot a képfájl felhasználásával
IPPImage picture;
IImage image = Images.fromFile("image.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Hozzáadja a képet az első táblázat cellához
ICellFormat cellFormat = tbl.get_Item(0, 0).getCellFormat();
cellFormat.getFillFormat().setFillType(FillType.Picture);
cellFormat.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch);
cellFormat.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Mentés a PPTX fájl lemezre
pres.save("Image_In_TableCell_out.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
GYIK
Beállíthatok különböző vonalvastagságot és stílust a cella egyes oldalain?
Igen. A felső/alsó/bal/jobb szegélyeknek külön tulajdonságaik vannak, így minden oldal vastagsága és stílusa eltérhet. Ez logikusan következik a cikkben bemutatott cella per oldalra vonatkozó szegélyvezérlésből.
Mi történik a képpel, ha megváltoztatom az oszlop/sor méretét miután képet állítottam be a cella háttérként?
A viselkedés a kitöltési mód (nyújtás/csempézés) függvénye. Nyújtás esetén a kép a új cellához igazodik; csempézés esetén a csempéket újraszámolják. A cikk említi a kép megjelenítési módjait egy cellában.
Hozzáadhatok hiperhivatkozást a cella teljes tartalmához?
A Hyperlinks a cella szövegkeretén belüli szövegszakasz (portion) szintjén vagy a teljes táblázat/forma szintjén állítható be. Gyakorlatban a hivatkozást egy szakaszhoz vagy a cella teljes szövegéhez rendeli.
Beállíthatok különböző betűtípusokat egyetlen cellában?
Igen. A cella szövegkerete támogatja a portions (futtatások) független formázásával – betűcsalád, stílus, méret és szín.