Táblacellák kezelése prezentációkban JavaScript használatával
Áttekintés
Aspose.Slides lehetővé teszi a táblázatcellák elérését és módosítását PowerPoint‑prezentációkban. Ebben a cikkben bemutatjuk, hogyan azonosítsuk a egyesített táblázatcellákat, hogyan távolítsuk el a cellaszegélyeket, hogyan kezeljük a cellaszámozást egyesítés vagy felosztás után, hogyan változtassuk meg egy cella háttérszínét, és hogyan adjunk képet egy táblázatcellához. A példák bemutatják, hogyan hozzunk létre vagy nyissunk meg egy prezentációt, hogyan szerezzünk be egy táblát egy diából, hogyan frissítsük a cella formázását a cella tulajdonságai alapján, és hogyan mentjük a módosított prezentációt PPTX fájlként.
Egyesített táblázatcella azonosítása
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze be a táblát az első diáról.
- Iteráljon a tábla sorain és oszlopain, hogy megtalálja az egyesített cellákat.
- Írjon ki üzenetet, amikor egyesített cellákat talál.
Ez a JavaScript kód bemutatja, hogyan azonosítsa az egyesített táblázatcellákat egy prezentációban:
var pres = new aspose.slides.Presentation("SomePresentationWithTable.pptx");
try {
var table = pres.getSlides().get_Item(0).getShapes().get_Item(0);// feltételezve, hogy a Slide#0.Shape#0 egy táblázat
for (var i = 0; i < table.getRows().size(); i++) {
for (var j = 0; j < table.getColumns().size(); j++) {
var currentCell = table.getRows().get_Item(i).get_Item(j);
if (currentCell.isMergedCell()) {
console.log(java.callStaticMethodSync("java.lang.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áblacellák szegélyének eltávolítása
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen referenciát egy diára az indexével.
- Határozzon meg egy oszlopok szélességét tartalmazó tömböt.
- Határozzon meg egy sorok magasságát tartalmazó tömböt.
- Adjon hozzá egy táblát a diához a addTable metódussal.
- 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 JavaScript kód bemutatja, hogyan távolítsa el a szegélyeket a táblacellákról:
// Létrehozza a Presentation osztályt, amely egy PPTX fájlt képvisel
var pres = new aspose.slides.Presentation();
try {
// Eléri az első diát
var sld = pres.getSlides().get_Item(0);
// Meghatározza az oszlopokat szélességekkel és a sorokat magasságokkal
var dblCols = java.newArray("double", [50, 50, 50, 50]);
var dblRows = java.newArray("double", [50, 30, 30, 30, 30]);
// Táblázat alakzatot ad hozzá a diához
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegély formátumát minden cellához
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
}
}
// A PPTX fájlt lemezre írja
pres.save("table_out.pptx", aspose.slides.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ábla számozott lesz. Ez a JavaScript kód bemutatja a folyamatot:
// Létrehozza a Presentation osztályt, amely egy PPTX fájlt képvisel
var pres = new aspose.slides.Presentation();
try {
// Eléri az első diát
var sld = pres.getSlides().get_Item(0);
// Meghatározza az oszlopokat szélességekkel és a sorokat magasságokkal
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Táblázat alakzatot ad a diára
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegély formátumát minden cellához
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Egyesíti a cellákat (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Egyesíti a cellákat (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
pres.save("MergeCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Ezután tovább egyesítjük a cellákat (1,1) és (1,2) összevonásával. Az eredmény egy középen nagy egyesített cellát tartalmazó tábla:
// Létrehozza a Presentation osztályt, amely egy PPTX fájlt képvisel
var pres = new aspose.slides.Presentation();
try {
// Eléri az első diát
var sld = pres.getSlides().get_Item(0);
// Meghatározza az oszlopokat szélességekkel és a sorokat magasságokkal
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Táblázat alakzatot ad a diához
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegély formátumát minden cellához
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Egyesíti a cellákat (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Egyesíti a cellákat (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Egyesíti a cellákat (1, 1) x (1, 2)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(1, 2), true);
// A PPTX fájlt lemezre írja
pres.save("MergeCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Számozás felosztott cellában
Az előző példákban, amikor a táblacellákat egyesítették, a többi cellában a számozás vagy számrendszer nem változott.
Ezúttal egy szabályos táblát (azaz egy olyan táblát, amelyben nincsenek egyesített cellák) veszünk, és megpróbáljuk felosztani a (1,1) cellát, hogy egy speciális táblát kapjunk. Érdemes figyelni a tábla számozására, amely furcsának tűnhet. Ennek azonban a Microsoft PowerPoint táblacellák számozásának módja, és az Aspose.Slides is ugyanezt teszi.
Ez a JavaScript kód bemutatja a leírt folyamatot:
// Létrehozza a Presentation osztályt, amely egy PPTX fájlt képvisel
var pres = new aspose.slides.Presentation();
try {
// Eléri az első diát
var sld = pres.getSlides().get_Item(0);
// Meghatározza az oszlopokat szélességekkel és a sorokat magasságokkal
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Táblázat alakzatot ad a diához
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Beállítja a szegély formátumát minden cellához
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// Egyesíti a cellákat (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Egyesíti a cellákat (1, 2) x (2, 2)
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);
// A PPTX fájlt lemezre írja
pres.save("SplitCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Táblacellák háttérszínének módosítása
Ez a JavaScript kód bemutatja, hogyan változtassa meg egy táblacella háttérszínét:
var presentation = new aspose.slides.Presentation();
try {
var slide = presentation.getSlides().get_Item(0);
var dblCols = java.newArray("double", [150, 150, 150, 150]);
var dblRows = java.newArray("double", [50, 50, 50, 50, 50]);
// új táblát hoz létre
var table = slide.getShapes().addTable(50, 50, dblCols, dblRows);
// beállítja egy cella háttérszínét
var cell = table.get_Item(2, 3);
cell.getCellFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
presentation.save("cell_background_color.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Kép hozzáadása a táblacellán belül
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen referenciát egy diára az indexével.
- Határozzon meg egy oszlopok szélességét tartalmazó tömböt.
- Határozzon meg egy sorok magasságát tartalmazó tömböt.
- Adjon hozzá egy táblát a diához a addTable metódussal.
- Hozzon létre egy
Imagesobjektumot a képfájl tárolásához. - Adja hozzá az
IImageképet aPPImageobjektumhoz. - Állítsa be a táblacellához a
FillFormatértékétPicture-re. - Adja hozzá a képet a tábla első cellájához.
- Mentse a módosított prezentációt PPTX fájlként
Ez a JavaScript kód bemutatja, hogyan helyezzen el egy képet egy táblacellán belül táblát létrehozva:
// Létrehozza a Presentation osztályt, amely egy PPTX fájlt képvisel
var pres = new aspose.slides.Presentation();
try {
// Eléri az első diát
var islide = pres.getSlides().get_Item(0);
// Meghatározza az oszlopokat szélességekkel és a sorokat magasságokkal
var dblCols = java.newArray("double", [150, 150, 150, 150]);
var dblRows = java.newArray("double", [100, 100, 100, 100, 90]);
// Táblázat alakzatot ad a diához
var tbl = islide.getShapes().addTable(50, 50, dblCols, dblRows);
// PPImage objektumot hoz létre a képfájl használatával
var picture;
var image = aspose.slides.Images.fromFile("image.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
// Hozzáadja a képet az első táblacellához
var cellFormat = tbl.get_Item(0, 0).getCellFormat();
cellFormat.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Picture));
cellFormat.getFillFormat().getPictureFillFormat().setPictureFillMode(aspose.slides.PictureFillMode.Stretch);
cellFormat.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// A PPTX fájlt lemezre menti
pres.save("Image_In_TableCell_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
GYIK
Beállíthatok-e különböző vonalvastagságot és stílust a cella egyes oldalain?
Igen. A felső/alsó/bal/jobb szegélyek különálló tulajdonságokkal rendelkeznek, így minden oldal vastagsága és stílusa eltérő lehet. Ez logikusan következik a cikkben bemutatott, cellánkénti oldalra vonatkozó szegélyvezérlésből.
Mi történik a képpel, ha a háttérként beállított kép után megváltoztatom az oszlop/sor méretét?
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 alkalmazkodik az új cellához; csempézés esetén a csempéket újraszámítják. A cikk említi a kép megjelenítési módjait egy cellában.
Hozzá lehet-e rendelni hiperhivatkozást a cella teljes tartalmához?
Hyperlinks a cella szövegkeretén belül a szöveg (részlet) szintjén vagy az egész táblán/alakzat szintjén állítható be. Gyakorlatban a hivatkozást egy részlethez vagy a cella teljes szövegéhez rendeli.
Beállíthatok-e különböző betűtípusokat egyetlen cellán belül?
Igen. A cella szövegkerete támogatja a részleteket (futtatások) független formázással – betűcsalád, stílus, méret és szín.