JavaScript Kullanarak Sunumlarda Tablo Hücrelerini Yönetme
Genel Bakış
Aspose.Slides, PowerPoint sunumlarındaki tablo hücrelerine erişmenizi ve bu hücreleri değiştirmenizi sağlar. Bu makale, birleştirilmiş tablo hücrelerini nasıl tanımlayacağınızı, hücre kenarlıklarını nasıl kaldıracağınızı, hücreleri birleştirme veya bölme sonrasında hücre numaralandırmasıyla nasıl çalışılacağını, bir hücrenin arka plan rengini nasıl değiştireceğinizi ve bir tablo hücresine nasıl resim ekleyeceğinizi açıklar. Örnekler, bir sunumun nasıl oluşturulup açılacağını, bir slayttan tablo almayı, hücre özellikleri aracılığıyla hücre biçimlendirmesini güncellemeyi ve değiştirilmiş sunumu PPTX dosyası olarak kaydetmeyi gösterir.
Birleştirilmiş Tablo Hücresini Tanımlama
- Presentation sınıfının bir örneğini oluşturun.
- İlk slayttan tabloyu alın.
- Birleştirilmiş hücreleri bulmak için tablonun satır ve sütunlarında yineleme yapın.
- Birleştirilmiş hücreler bulunduğunda mesaj yazdırın.
Bu JavaScript kodu, bir sunumda birleştirilmiş tablo hücrelerini nasıl tanımlayacağınızı gösterir:
var pres = new aspose.slides.Presentation("SomePresentationWithTable.pptx");
try {
var table = pres.getSlides().get_Item(0).getShapes().get_Item(0);// Slide#0.Shape#0'ın bir tablo olduğunu varsayarak
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();
}
}
Tablo Hücreleri Kenarlığını Kaldırma
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaytın referansını indeks üzerinden alın.
- Genişlik değerleriyle bir sütun dizisi tanımlayın.
- Yükseklik değerleriyle bir satır dizisi tanımlayın.
- addTable yöntemiyle slayta bir tablo ekleyin.
- Her hücrede üst, alt, sağ ve sol kenarlıkları temizlemek için yineleme yapın.
- Değiştirilen sunumu PPTX dosyası olarak kaydedin.
Bu JavaScript kodu, tablo hücrelerinin kenarlıklarını nasıl kaldıracağınızı gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// Genişlikleri olan sütunları ve yükseklikleri olan satırları tanımlar
var dblCols = java.newArray("double", [50, 50, 50, 50]);
var dblRows = java.newArray("double", [50, 30, 30, 30, 30]);
// Slayta tablo şekli ekler
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücre için kenarlık biçimini ayarlar
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));
}
}
// PPTX dosyasını diske yazar
pres.save("table_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Birleştirilmiş Hücrelerde Numaralandırma
2 çift hücreyi (1, 1) x (2, 1) ve (1, 2) x (2, 2) birleştirirsek, ortaya çıkan tablo numaralandırılmış olacaktır. Bu JavaScript kodu süreci gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// Genişlikleri olan sütunları ve yükseklikleri olan satırları tanımlar
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Slayta tablo şeklini ekler
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücre için kenarlık biçimini ayarlar
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);
}
}
// (1, 1) x (2, 1) hücrelerini birleştirir
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// (1, 2) x (2, 2) hücrelerini birleştirir
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();
}
}
Daha sonra (1, 1) ve (1, 2) hücrelerini birleştirerek tabloyu daha da birleştiririz. Sonuç, ortada büyük bir birleştirilmiş hücre içeren bir tablo olur:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// Genişlikleri olan sütunları ve yükseklikleri olan satırları tanımlar
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Slayta tablo şekli ekler
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücre için kenarlık biçimini ayarlar
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);
}
}
// (1, 1) x (2, 1) hücrelerini birleştirir
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// (1, 2) x (2, 2) hücrelerini birleştirir
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// (1, 1) x (1, 2) hücrelerini birleştirir
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(1, 2), true);
// PPTX dosyasını diske yazar
pres.save("MergeCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Bölünmüş Hücrelerde Numaralandırma
Önceki örneklerde, tablo hücreleri birleştirildiğinde diğer hücrelerdeki numaralandırma sistemi değişmezdi.
Bu sefer, birleştirilmemiş bir tablo (birleştirilmiş hücre olmayan tablo) alıp (1,1) hücresini bölerek özel bir tablo elde ediyoruz. Bu tablonun numaralandırmasına dikkat etmeniz gerekebilir; ilk bakışta garip görünebilir. Ancak bu, Microsoft PowerPoint’in tablo hücrelerini numaralandırma şeklidir ve Aspose.Slides de aynı davranışı sergiler.
Bu JavaScript kodu, açıklanan süreci gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// Genişlikleri olan sütunları ve yükseklikleri olan satırları tanımlar
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Slayta tablo şekli ekler
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücre için kenarlık biçimini ayarlar
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);
}
}
// (1, 1) x (2, 1) hücrelerini birleştirir
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// (1, 2) x (2, 2) hücrelerini birleştirir
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// (1, 1) hücresini böler
tbl.get_Item(1, 1).splitByWidth(tbl.get_Item(2, 1).getWidth() / 2);
// PPTX dosyasını diske yazar
pres.save("SplitCells_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Tablo Hücresi Arka Plan Rengini Değiştirme
Bu JavaScript kodu, bir tablo hücresinin arka plan rengini nasıl değiştireceğinizi gösterir:
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]);
// yeni bir tablo oluştur
var table = slide.getShapes().addTable(50, 50, dblCols, dblRows);
// bir hücre için arka plan rengini ayarla
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();
}
}
Tablo Hücresi İçine Resim Ekleme
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaytın referansını indeks üzerinden alın.
- Genişlik değerleriyle bir sütun dizisi tanımlayın.
- Yükseklik değerleriyle bir satır dizisi tanımlayın.
- addTable yöntemiyle slayta bir tablo ekleyin.
- Resim dosyasını tutmak için bir
Imagesnesnesi oluşturun. IImageresminiPPImagenesnesine ekleyin.- Tablo hücresi için
FillFormatdeğeriniPictureolarak ayarlayın. - Resmi tablonun ilk hücresine ekleyin.
- Değiştirilen sunumu PPTX dosyası olarak kaydedin.
Bu JavaScript kodu, bir tablo oluştururken bir tablo hücresine nasıl resim yerleştirileceğini gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var islide = pres.getSlides().get_Item(0);
// Genişlikleri olan sütunları ve yükseklikleri olan satırları tanımlar
var dblCols = java.newArray("double", [150, 150, 150, 150]);
var dblRows = java.newArray("double", [100, 100, 100, 100, 90]);
// Slayta tablo şekli ekler
var tbl = islide.getShapes().addTable(50, 50, dblCols, dblRows);
// Görüntü dosyasını kullanarak bir PPImage nesnesi oluşturur
var picture;
var image = aspose.slides.Images.fromFile("image.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
// Görüntüyü ilk tablo hücresine ekler
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);
// PPTX dosyasını diske kaydeder
pres.save("Image_In_TableCell_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
SSS
Tek bir hücrenin farklı kenarları için farklı çizgi kalınlıkları ve stilleri ayarlayabilir miyim?
Evet. top/bottom/left/right kenarların ayrı özellikleri vardır; böylece her tarafın kalınlığı ve stili farklı olabilir. Bu, makalede gösterilen hücre başına kenar kontrolüne dayanmaktadır.
Bir hücrenin arka planına resmi ayarladıktan sonra sütun/ satır boyutunu değiştirirsem resim ne olur?
Davranış, fill mode (stretch/tile) değerine bağlıdır. Stretch seçilirse resim yeni hücreye göre ayarlanır; tile seçilirse döşemeler yeniden hesaplanır. Makale, hücredeki resim görüntüleme modlarından bahseder.
Bir hücrenin tüm içeriğine bir hiperlink atayabilir miyim?
Hyperlinks hücrenin metin çerçevesindeki metin (parça) seviyesinde veya tüm tablo/şekil seviyesinde ayarlanır. Pratikte, bağlantıyı bir parçaya ya da hücredeki tüm metne atarsınız.
Tek bir hücre içinde farklı yazı tipleri kullanabilir miyim?
Evet. Bir hücrenin metin çerçevesi, bağımsız biçimlendirmeye sahip portions (run)ları destekler—yazı tipi, stil, boyut ve renk.