Android'de Sunum Tablolarını Yönet
Giriş
PowerPoint’te bir tablo, bilgileri görüntülemek ve aktarmak için etkili bir yoldur. Hücrelerden oluşan bir ızgara (satır ve sütunlara göre düzenlenmiş) içindeki bilgi basit ve anlaşılması kolaydır.
Aspose.Slides, Table sınıfını, ITable arayüzünü, Cell sınıfını, ICell arayüzünü ve diğer türleri sağlayarak çeşitli sunumlarda tablo oluşturmanıza, güncellemenize ve yönetmenize olanak tanır.
Sıfırdan Bir Tablo Oluşturma
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaytın referansını indeks yoluyla alın.
columnWidthdizisini tanımlayın.rowHeightdizisini tanımlayın.- addTable yöntemiyle slayta bir ITable nesnesi ekleyin.
- Her bir ICell üzerinden dolaşarak üst, alt, sağ ve sol kenarlara biçimlendirme uygulayın.
- Tablonun ilk satırındaki ilk iki hücreyi birleştirin.
- Bir ICell‘in TextFrame nesfesine erişin.
- TextFrame içine biraz metin ekleyin.
- Değiştirilmiş sunumu kaydedin.
Bu Java kodu, bir sunumda tablo oluşturma yöntemini gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
Presentation pres = new Presentation();
try {
// İlk slayta erişir
ISlide sld = pres.getSlides().get_Item(0);
// Sütunları genişlikleri ve satırları yükseklikleri ile tanımlar
double[] dblCols = {50, 50, 50};
double[] dblRows = {50, 30, 30, 30, 30};
// Slayta bir tablo şekli ekler
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Her hücre için kenar 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 biraz metin 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 Bir Tablo İçinde Numaralandırma
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 tabloda 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 tabloda hücrelerin numaralandırmasını nasıl belirleyeceğinizi gösterir:
// PPTX dosyasını temsil eden Presentation sınıfını örnekler
Presentation pres = new Presentation();
try {
// İlk slayta erişir
ISlide sld = pres.getSlides().get_Item(0);
// Sütunları genişlikleri ve satırları yükseklikleri ile 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ücre için kenar 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 yoluyla referans alın.
-
Bir ITable nesnesi oluşturun ve null olarak ayarlayın.
-
Tablo bulunana kadar tüm IShape nesneleri üzerinde dolaşın.
Eğer üzerinde çalıştığınız slaytın tek bir tablo içerdiğini düşünüyorsanız, içinde bulunduğu tüm şekilleri kontrol edebilirsiniz. Bir şekil tablo olarak tanımlandığında, onu bir Table nesnesine tip dönüştürebilirsiniz. Ancak slayt birden fazla tablo içeriyorsa, ihtiyacınız olan tabloyu setAlternativeText(String value) özelliğiyle aramanız daha uygundur.
-
ITable nesnesini kullanarak tablo ile çalışın. Aşağıdaki örnekte tabloya yeni bir satır eklenmiştir.
-
Değiştirilmiş 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ı örnekler
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;
// Şekiller arasında dolaşır ve bulunan tabloya bir referans ayarlar
for (IShape shp : sld.getShapes())
{
if (shp instanceof ITable)
{
tbl = (ITable) 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", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tablodaki Metni Hizalama
- Presentation sınıfının bir örneğini oluşturun.
- Bir slaytın referansını indeks yoluyla alın.
- Slayta bir ITable nesnesi ekleyin.
- Tablodan bir ITextFrame nesnesine erişin.
- ITextFrame içindeki IParagraph nesnesine erişin.
- Metni dikey olarak hizalayın.
- Değiştirilmiş sunumu kaydedin.
Bu Java kodu, bir tablodaki metni nasıl hizalayacağınızı 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);
// Sütunları genişlikleri ve satırları yükseklikleriyle 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 yaratır
IParagraph paragraph = txtFrame.getParagraphs().get_Item(0);
// Paragraf için Portion nesnesi yaratır
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.
- Bir slaytın referansını indeks yoluyla 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ştirilmiş sunumu kaydedin.
Bu Java kodu, 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 yazı tipi 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 Alma
Aspose.Slides, bir tablonun stil özelliklerini almanıza olanak tanır; bu sayede bu detayları başka bir tabloya ya da başka bir yere 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();
}
Tablonun En–Boy Oranını Kilitleme
Geometrik bir şeklin en‑boy oranı, farklı boyutlar arasındaki orandır. Aspose.Slides, tablolar ve diğer şekiller için en‑boy oranı kilitleme ayarını yapmanıza izin veren setAspectRatioLocked özelliğini sunar.
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 yöntemini yayınlar ve paragraflar da ParagraphFormat.setRightToLeft metoduna sahiptir. Her ikisini de kullanmak, hücreler içinde doğru RTL sırasını ve renderlamayı sağlar.
Kullanıcıların final dosyasında bir 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 tablolar için de geçerlidir.
Bir hücrenin içinde arka plan olarak bir resim eklemek destekleniyor mu?
Evet. Bir hücreye picture fill ayarlayabilirsiniz; resim, seçilen moda (germe veya döşeme) göre hücre alanını kaplar.