Java'da Sunum Tablolarını Yönetme
Giriş
PowerPoint’teki bir tablo, bilgiyi görüntülemenin ve aktarmanın verimli bir yoludur. Satır ve sütunlarda düzenlenmiş hücre ızgarasındaki bilgi, doğrudan ve anlaşılması kolaydır.
Aspose.Slides, Table sınıfı, ITable arayüzü, Cell sınıfı, ICell arayüzü ve tabloları tüm sunum türlerinde oluşturmanıza, güncellemenize ve yönetmenize olanak tanıyan diğer tipleri sağlar.
Sıfırdan Tablo Oluşturma
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın indeksine göre bir referans alın.
columnWidthdizisini tanımlayın.rowHeightdizisini tanımlayın.- addTable yöntemiyle slayta bir ITable nesnesi ekleyin.
- Her bir ICell üzerinden geçerek üst, alt, sağ ve sol kenarlara biçimlendirme uygulayın.
- Tablonun ilk satırının ilk iki hücresini birleştirin.
- Bir ICell‘in TextFrame öğesine erişin.
- TextFrame öğesine bir metin ekleyin.
- Değiştirilen sunumu kaydedin.
Bu Java kodu, bir sunumda tablo oluşturmayı gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını oluşturur
Presentation pres = new Presentation();
try {
// İlk slayta erişir
ISlide sld = pres.getSlides().get_Item(0);
// Genişliklerle sütunları ve yüksekliklerle satırları tanımlar
double[] dblCols = {50, 50, 50};
double[] dblRows = {50, 30, 30, 30, 30};
// Slayda bir tablo şekli ekler
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücrenin kenarlık biçimini ayarlar
for (int row = 0; row < tbl.getRows().size(); row++)
{
for (int cell = 0; cell < tbl.getRows().get_Item(row).size(); cell++)
{
ICellFormat cellFormat = tbl.getRows().get_Item(row).get_Item(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);
}
}
// 1. satırın 1. ve 2. hücrelerini birleştirir
tbl.mergeCells(tbl.getRows().get_Item(0).get_Item(0), tbl.getRows().get_Item(1).get_Item(1), false);
// Birleştirilmiş hücreye bazı metinler ekler
tbl.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells");
// Sunumu diske kaydeder
pres.save("table.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Standart Tablo Numaralandırması
Standart bir tabloda hücrelerin numaralandırması basit 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 Java kodu, bir tablodaki hücrelerin numaralandırmasını nasıl belirleyeceğinizi gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını oluşturur
Presentation pres = new Presentation();
try {
// İlk slayta erişir
ISlide sld = pres.getSlides().get_Item(0);
// Genişliklerle sütunları ve yüksekliklerle satırları tanımlar
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Slayta bir tablo şekli ekler
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücrenin kenarlık biçimini ayarlar
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);
}
}
// Sunumu diske kaydeder
pres.save("StandardTables_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Mevcut Bir Tabloya Erişim
-
Presentation sınıfının bir örneğini oluşturun.
-
Tabloyu içeren slayta indeks üzerinden bir referans alın.
-
Bir ITable nesnesi oluşturun ve null olarak ayarlayın.
-
Tablo bulunana kadar tüm IShape nesneleri üzerinden geçin.
Eğer üzerinde çalıştığınız slayt tek bir tablo içeriyorsa, içinde bulunan tüm şekilleri kontrol edebilirsiniz. Bir şekil tablo olarak tanımlandığında, onu bir Table nesnesine tip dönüşümü yapabilirsiniz. Ancak, slayt birden fazla tablo içeriyorsa, ihtiyacınız olan tabloyu setAlternativeText(String value) yöntemiyle aramanız daha iyidir.
-
ITable nesnesini tablo ile çalışmak için kullanın. Aşağıdaki örnekte tabloya yeni bir satır ekledik.
-
Değiştirilen sunumu kaydedin.
Bu Java kodu, mevcut bir tabloya nasıl erişileceğini ve onunla nasıl çalışılacağını gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını oluşturur
Presentation pres = new Presentation("UpdateExistingTable.pptx");
try {
// İlk slayta erişir
ISlide sld = pres.getSlides().get_Item(0);
// null TableEx'i başlatır
ITable tbl = null;
// Şekillerde dolaşıp bulunan tabloya bir referans ayarlar
for (IShape shp : sld.getShapes())
{
if (shp instanceof ITable)
{
tbl = (ITable) shp;
// İkinci satırın ilk sütunu için metni ayarlar
tbl.get_Item(0, 1).getTextFrame().setText("New");
}
}
// Değiştirilen sunumu diske kaydeder
pres.save("table1_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tablodaki Metni Hizalama
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın indeksine göre bir referans alın.
- Slayta bir ITable nesnesi ekleyin.
- Tablo üzerinden bir ITextFrame nesnesine erişin.
- ITextFrame içindeki IParagraph öğesine erişin.
- Metni dikey olarak hizalayın.
- Değiştirilen sunumu kaydedin.
Bu Java kodu, bir tablodaki metnin nasıl hizalanacağını gösterir:
// Presentation sınıfının bir örneğini oluşturur
Presentation pres = new Presentation();
try {
// İlk slaytı alır
ISlide slide = pres.getSlides().get_Item(0);
// Genişliklerle sütunları ve yüksekliklerle satırları tanımlar
double[] dblCols = { 120, 120, 120, 120 };
double[] dblRows = { 100, 100, 100, 100 };
// Tablo şekli slayta eklenir
ITable 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
ITextFrame txtFrame = tbl.get_Item(0, 0).getTextFrame();
// Metin çerçevesi için Paragraph nesnesi oluşturur
IParagraph paragraph = txtFrame.getParagraphs().get_Item(0);
// Paragraf için Portion nesnesi oluşturur
IPortion portion = paragraph.getPortions().get_Item(0);
portion.setText("Text here");
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
// Metni dikey olarak hizalar
ICell cell = tbl.get_Item(0, 0);
cell.setTextAnchorType(TextAnchorType.Center);
cell.setTextVerticalType(TextVerticalType.Vertical270);
// Sunumu diske kaydeder
pres.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tablo Düzeyinde Metin Biçimlendirmesi Ayarlama
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın indeksine göre bir referans alın.
- Slayttan bir ITable 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ştirilen sunumu kaydedin.
Bu Java kodu, bir tablo içindeki metne tercih ettiğiniz biçimlendirme seçeneklerini nasıl uygulayacağınızı gösterir:
// Presentation sınıfının bir örneğini oluşturur
Presentation pres = new Presentation("simpletable.pptx");
try {
// İlk slayttaki ilk şeklin bir tablo olduğunu varsayalım
ITable someTable = (ITable) pres.getSlides().get_Item(0).getShapes().get_Item(0);
// Tablo hücrelerinin font yüksekliğini ayarlar
PortionFormat portionFormat = new 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
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.setAlignment(TextAlignment.Right);
paragraphFormat.setMarginRight(20);
someTable.setTextFormat(paragraphFormat);
// Tablo hücrelerinin metin dikey tipini ayarlar
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
someTable.setTextFormat(textFrameFormat);
pres.save("result.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tablo Stil Özelliklerini Almak
Aspose.Slides, bir tablonun stil özelliklerini almanıza olanak tanır; böylece bu detayları başka bir tabloya ya da başka bir konuma uygulayabilirsiniz. Bu Java kodu, bir tablo ön ayar stilinden stil özelliklerini nasıl alacağınızı gösterir:
Presentation pres = new Presentation();
try {
ITable table = pres.getSlides().get_Item(0).getShapes().addTable(10, 10, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
table.setStylePreset(TableStylePreset.DarkStyle1); // varsayılan stil ön ayar temasını değiştir
pres.save("table.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Bir Tablonun En Boy Oranını Kilitleme
Geometrik bir şeklin en boy oranı, farklı boyutlardaki boyutlarının oranıdır. Aspose.Slides, tablolar ve diğer şekiller için en boy oranı kilitleme ayarını sağlamanız amacıyla setAspectRatioLocked özelliğini sundu.
Bu Java kodu, bir tablonun en boy oranını nasıl kilitleyeceğinizi gösterir:
Presentation pres = new Presentation("pres.pptx");
try {
ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0);
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
table.getGraphicalObjectLock().setAspectRatioLocked(!table.getGraphicalObjectLock().getAspectRatioLocked()); // tersine çevir
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
SSS
Bir tablonun ve hücrelerindeki metnin tamamı için sağdan sola (RTL) okuma yönünü etkinleştirebilir miyim?
Evet. Tablo, setRightToLeft metodunu sunar ve paragraflar da ParagraphFormat.setRightToLeft metoduna sahiptir. Her ikisinin de kullanılması, hücreler içinde doğru RTL sırasını ve renderlamayı sağlar.
Kullanıcıların final dosyasında tabloyu taşımasını veya yeniden boyutlandırmasını nasıl engelleyebilirim?
Şekil kilitlerini kullanarak taşıma, yeniden boyutlandırma, seçim vb. işlemleri devre dışı bırakın. Bu kilitler tablolara da uygulanır.
Bir hücrenin içinde arka plan olarak bir resim eklemek destekleniyor mu?
Evet. Bir hücre için picture fill ayarlayabilirsiniz; resim, seçilen moda (esnetme ya da döşeme) göre hücre alanını kaplar.