JavaScript ile Sunum Tablolarını Yönetme
Giriş
PowerPoint’teki bir tablo, bilgiyi görüntülemenin ve sunmanın etkili bir yoludur. Hücrelerden oluşan bir ızgaradaki (satır ve sütunlara düzenlenmiş) bilgiler doğrudan ve anlaşılması kolaydır.
Aspose.Slides, Table sınıfı, Cell sınıfı ve tabloları her türlü sunumda oluşturmanıza, güncellemenize ve yönetmenize olanak sağlayan diğer türleri sağlar.
Sıfırdan Tablo Oluşturma
- Bir Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeksine göre alın.
columnWidthdizisini tanımlayın.rowHeightdizisini tanımlayın.- Slayta, addTable yöntemiyle bir Table nesnesi ekleyin.
- Her bir Cell üzerinde dolaşarak üst, alt, sağ ve sol kenarlara biçimlendirme uygulayın.
- Tablonun sol üst köşesindeki dört hücreyi (ilk iki satırın ilk iki sütunu) tek bir hücreye birleştirin.
- Bir Cell‘in TextFrame öğesine erişin.
- TextFrame’e bir metin ekleyin.
- Değiştirilmiş sunumu kaydedin.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
// PPTX dosyasını temsil eden bir Presentation sınıfı örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// Genişlikleriyle sütunları ve yükseklikleriyle satırları tanımlar
var dblCols = java.newArray("double", [50, 50, 50]);
var dblRows = java.newArray("double", [50, 30, 30, 30, 30]);
// Slayta bir tablo şekli ekler
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücrenin kenar biçimini ayarlar
for (var row = 0; row < tbl.getRows().size(); row++) {
for (var cell = 0; cell < tbl.getRows().get_Item(row).size(); cell++) {
var cellFormat = tbl.getRows().get_Item(row).get_Item(cell).getCellFormat();
cellFormat.getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderTop().setWidth(5);
cellFormat.getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderBottom().setWidth(5);
cellFormat.getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderLeft().setWidth(5);
cellFormat.getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderRight().setWidth(5);
}
}
// Sol üstteki 2x2 hücre bloğunu tek hücreye birleştirir
tbl.mergeCells(tbl.getRows().get_Item(0).get_Item(0), tbl.getRows().get_Item(1).get_Item(1), false);
// Birleştirilen hücreye bazı metin ekler
tbl.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells");
// Sunumu diske kaydeder
pres.save("table.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Standart Tablo Numaralandırması
Standart bir tabloda hücrelerin numaralandırması doğrudan ve sıfır tabanlıdır. Bir tablodaki ilk hücre 0,0 (sütun 0, satır 0) olarak indekslenir.
Örneğin, 4 sütun ve 4 satır içeren bir tablodaki hücreler şu şekilde numaralandırılır:
| (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) |
Bu JavaScript kodu, bir tablodaki hücreler için numaralandırmanın nasıl belirtileceğini gösterir:
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
// PPTX dosyasını temsil eden bir Presentation sınıfı örnekler
var pres = new aspose.slides.Presentation();
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// Genişlikleriyle sütunları ve yükseklikleriyle satırları tanımlar
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// Slayta bir tablo şekli ekler
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücre için kenar 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);
}
}
// Sunumu diske kaydeder
pres.save("StandardTables_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Mevcut Tabloya Erişim
- Bir Presentation sınıfının bir örneğini oluşturun.
- Tabloyu içeren slayta indeksine göre bir referans alın.
- Bir Table nesnesi oluşturun ve null olarak ayarlayın.
- Tablo bulunana kadar tüm Shape nesneleri üzerinde döngü yapın.
Eğer üzerinde çalıştığınız slaydın tek bir tablo içerdiğini düşünüyorsanız, içindeki tüm şekilleri basitçe kontrol edebilirsiniz. Bir şekil tablo olarak tanımlandığında, onu bir Table nesnesi olarak tip dönüştürebilirsiniz. Ancak slayt birden fazla tablo içeriyorsa, ihtiyacınız olan tabloyu setAlternativeText(String value) yöntemiyle aramanız daha iyidir. - Tabloyla çalışmak için Table nesnesini kullanın. Aşağıdaki örnekte, tablodaki bir hücrenin metnini ayarlıyoruz.
- Değiştirilmiş sunumu kaydedin.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
// PPTX dosyasını temsil eden Presentation sınıfının bir örneğini oluşturur
var pres = new aspose.slides.Presentation("UpdateExistingTable.pptx");
try {
// İlk slayta erişir
var sld = pres.getSlides().get_Item(0);
// null TableEx'i başlatır
var tbl = null;
// Şekiller üzerinde döner ve bulunan tabloya bir referans ayarlar
for (let i = 0; i < sld.getShapes().size(); i++) {
let shp = sld.getShapes().get_Item(i);
if (java.instanceOf(shp, "com.aspose.slides.ITable")) {
tbl = shp;
// İkinci satırın birinci sütunu için metni ayarlar
tbl.get_Item(0, 1).getTextFrame().setText("New");
}
}
// Değiştirilmiş sunumu diske kaydeder
pres.save("table1_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Bir Metin Çerçevesine Sahip Hücreyi Bulma
Genel bir metin işleme kodu bir tablodan TextFrame aldığında, sahip olduğu Cell nesnesini almak için TextFrame.getParentCell yöntemini kullanın. Bir tablo hücresi metin çerçevesi için, TextFrame.getParentCell sahibi döndürür ve TextFrame.getParentShape null döndürür, tablo kendisi bir şekil olsa bile.
Hücre koordinatları, yalnızca okunabilir Cell.getFirstColumnIndex ve Cell.getFirstRowIndex yöntemleriyle elde edilir. TextFrame.getParentCell aynı zamanda yalnızca okunabilir bir gezinme sağlar: sahibi döndürür ancak sahipliği değiştirmez. Kullanımdan önce dönen hücrenin null olup olmadığını her zaman kontrol edin.
SmartArt düğümleriyle ilişkili şekilleri de içeren tablo hücresi ve şekil sahiplerini belirten eksiksiz bir örnek için Search and Replace Text sayfasına bakın.
Tabloda Metni Hizalama
- Bir Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeksine göre alın.
- Slayta bir Table nesnesi ekleyin.
- Tablodan bir TextFrame nesnesine erişin.
- TextFrame içerisindeki Paragraph öğesine erişin.
- Metni dikey olarak hizalayın.
- Değiştirilmiş sunumu kaydedin.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
// Presentation sınıfının bir örneğini oluşturur
var pres = new aspose.slides.Presentation();
try {
// İlk slaytı alır
var slide = pres.getSlides().get_Item(0);
// Genişlikleriyle sütunları ve yükseklikleriyle satırları tanımlar
var dblCols = java.newArray("double", [120, 120, 120, 120]);
var dblRows = java.newArray("double", [100, 100, 100, 100]);
// Tablo şeklini slayta ekler
var 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");
// Metin çerçevesine erişir
var txtFrame = tbl.get_Item(0, 0).getTextFrame();
// Metin çerçevesi için Paragraph nesnesi oluşturur
var paragraph = txtFrame.getParagraphs().get_Item(0);
// Paragraf için Portion nesnesi oluşturur
var portion = paragraph.getPortions().get_Item(0);
portion.setText("Text here");
portion.getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// Metni dikey olarak hizalar
var cell = tbl.get_Item(0, 0);
cell.setTextAnchorType(java.newByte(aspose.slides.TextAnchorType.Center));
cell.setTextVerticalType(java.newByte(aspose.slides.TextVerticalType.Vertical270));
// Sunumu diske kaydeder
pres.save("Vertical_Align_Text_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Tablo Düzeyinde Metin Biçimlendirmesini Ayarlama
- Bir Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeksine göre alın.
- Slayttan bir Table nesnesine erişin.
- Metin için setFontHeight(float value) metodunu ayarlayın.
- setAlignment(int value) ve setMarginRight(float value) metodlarını ayarlayın.
- setTextVerticalType(byte value) metodunu ayarlayın.
- Değiştirilmiş sunumu kaydedin.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
// Presentation sınıfının bir örneğini oluşturur
var pres = new aspose.slides.Presentation("simpletable.pptx");
try {
// İlk slayttaki ilk şeklin bir tablo olduğunu varsayalım
var someTable = pres.getSlides().get_Item(0).getShapes().get_Item(0);
// Tablo hücrelerinin yazı tipi yüksekliğini ayarlar
var portionFormat = new aspose.slides.PortionFormat();
portionFormat.setFontHeight(25);
someTable.setTextFormat(portionFormat);
// Tablo hücrelerinin metin hizalamasını ve sağ kenar boşluğunu tek bir çağrıda ayarlar
var paragraphFormat = new aspose.slides.ParagraphFormat();
paragraphFormat.setAlignment(aspose.slides.TextAlignment.Right);
paragraphFormat.setMarginRight(20);
someTable.setTextFormat(paragraphFormat);
// Tablo hücrelerinin metin dikey türünü ayarlar
var textFrameFormat = new aspose.slides.TextFrameFormat();
textFrameFormat.setTextVerticalType(java.newByte(aspose.slides.TextVerticalType.Vertical));
someTable.setTextFormat(textFrameFormat);
pres.save("result.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Tablo Stil Ön Ayarını Belirleme
Aspose.Slides, yerleşik PowerPoint tablo stillerini TableStylePreset sayımı olarak sunar, böylece aynı görünümü herhangi bir tabloya uygulayabilirsiniz. Bu JavaScript kodu, bir tablonun varsayılan stilini ön ayar stiliyle nasıl değiştireceğinizi gösterir:
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
var pres = new aspose.slides.Presentation();
try {
var table = pres.getSlides().get_Item(0).getShapes().addTable(10, 10, java.newArray("double", [100, 150]), java.newArray("double", [5, 5, 5]));
table.setStylePreset(aspose.slides.TableStylePreset.DarkStyle1);// varsayılan stil ön ayarı temasını değiştirir
pres.save("table.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Tablonun En–Boy Oranını Kilitleme
Geometrik bir şeklin en–boy oranı, farklı boyutlardaki ölçülerinin oranıdır. Aspose.Slides, tablolar ve diğer şekiller için en–boy oranı kilitleme ayarını sağlayan setAspectRatioLocked özelliğini sunar.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var table = pres.getSlides().get_Item(0).getShapes().get_Item(0);
console.log("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
table.getGraphicalObjectLock().setAspectRatioLocked(!table.getGraphicalObjectLock().getAspectRatioLocked());// invert
console.log("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
pres.save("pres-out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
SSS
Bir tablonun tamamı ve hücrelerindeki metin için sağdan sola (RTL) okuma yönünü etkinleştirebilir miyim?
Evet. Tablo, setRightToLeft yöntemini, paragraflar ise ParagraphFormat.setRightToLeft yöntemini sağlar. Her ikisinin kullanılması, hücre içindeki doğru RTL sırasını ve render’ı garantiler.
Kullanıcıların son dosyada bir tabloyu taşımasını veya yeniden boyutlandırmasını nasıl engelleyebilirim?
Taşıma, yeniden boyutlandırma, seçim vb. işlemleri devre dışı bırakmak için şekil kilitlerini kullanın. Bu kilitler tabloya da uygulanır.
Bir hücrenin içinde görüntüyü arka plan olarak eklemek destekleniyor mu?
Evet. Bir hücre için picture fill ayarlayabilirsiniz; görüntü, seçilen moda (germe veya döşeme) göre hücre alanını kaplar.