.NET'te Sunum Tablolarını Yönetme
Giriş
PowerPoint’teki bir tablo, bilgiyi göstermek ve tasvir etmek için verimli bir yoldur. Hücrelerden oluşan bir ızgaradaki (satır ve sütun olarak düzenlenmiş) bilgi, doğrudan ve anlaşılması kolaydır.
Aspose.Slides, bir tablo oluşturmanıza, güncellemenize ve yönetmenize olanak tanıyan Table sınıfını, ITable arayüzünü, Cell sınıfını, ICell arayüzünü ve diğer türleri sağlar.
Sıfırdan Tablo Oluşturma
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeks üzerinden alın.
columnWidthdizisini tanımlayın.rowHeightdizisini tanımlayın.- AddTable yöntemiyle slayta bir ITable nesnesi ekleyin.
- Her bir ICell üzerinden yineleme yaparak ü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 ‘ine erişin.
- TextFrame‘e bir miktar metin ekleyin.
- Değiştirilmiş sunumu kaydedin.
Bu C# kodu, bir sunumda tablo oluşturmayı gösterir:
// PPTX dosyasını temsil eden bir Presentation sınıfı örnekleyerek oluşturur
Presentation pres = new Presentation();
// İlk slayta erişir
ISlide sld = pres.Slides[0];
// Sütunları genişlikleri ve satırları yükseklikleriyle tanımlar
double[] dblCols = { 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// Slayta bir tablo şekli ekler
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// Her hücre için kenar biçimini ayarlar
for (int row = 0; row < tbl.Rows.Count; row++)
{
for (int cell = 0; cell < tbl.Rows[row].Count; cell++)
{
tbl.Rows[row][cell].CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
tbl.Rows[row][cell].CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
tbl.Rows[row][cell].CellFormat.BorderTop.Width = 5;
tbl.Rows[row][cell].CellFormat.BorderBottom.FillFormat.FillType = (FillType.Solid);
tbl.Rows[row][cell].CellFormat.BorderBottom.FillFormat.SolidFillColor.Color= Color.Red;
tbl.Rows[row][cell].CellFormat.BorderBottom.Width =5;
tbl.Rows[row][cell].CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
tbl.Rows[row][cell].CellFormat.BorderLeft.FillFormat.SolidFillColor.Color =Color.Red;
tbl.Rows[row][cell].CellFormat.BorderLeft.Width = 5;
tbl.Rows[row][cell].CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
tbl.Rows[row][cell].CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
tbl.Rows[row][cell].CellFormat.BorderRight.Width = 5;
}
}
// 1. satırın 1 ve 2. hücrelerini birleştirir
tbl.MergeCells(tbl.Rows[0][0], tbl.Rows[1][1], false);
// Birleştirilen hücreye metin ekler
tbl.Rows[0][0].TextFrame.Text = "Merged Cells";
// Sunumu diske kaydeder
pres.Save("table.pptx", SaveFormat.Pptx);
Standart Tablo’da 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ırdan oluşan 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 C# kodu, bir tablodaki hücreler için numaralandırmayı nasıl belirteceğinizi gösterir:
// PPTX dosyasını temsil eden bir Presentation sınıfı örnekler
using (Presentation pres = new Presentation())
{
// İlk slayta erişir
ISlide sld = pres.Slides[0];
// Genişlikleriyle sütunları ve yükseklikleriyle satırları tanımlar
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Slayta bir tablo şekli ekler
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// Her hücre için kenar biçimini ayarlar
foreach (IRow row in tbl.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// Sunumu diske kaydeder
pres.Save("StandardTables_out.pptx", SaveFormat.Pptx);
}
Mevcut Bir Tabloya Erişme
-
Presentation sınıfının bir örneğini oluşturun.
-
Tabloyu içeren slayta indeks üzerinden referans alın.
-
Bir ITable nesnesi oluşturun ve null olarak ayarlayın.
-
Tablo bulunana kadar tüm IShape nesneleri üzerinde yineleme yapın.
Eğer üzerinde çalıştığınız slayt tek bir tablo içeriyorsa, içinde bulunduğu tüm şekilleri basitçe 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 AlternativeText özelliğiyle 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ştirilmiş sunumu kaydedin.
Bu C# kodu, mevcut bir tabloya nasıl erişileceğini ve üzerinde nasıl çalışılacağını gösterir:
// PPTX dosyasını temsil eden bir Presentation sınıfı örnekler
using (Presentation pres = new Presentation("UpdateExistingTable.pptx"))
{
// İlk slayta erişir
ISlide sld = pres.Slides[0];
// null TableEx'i başlatır
ITable tbl = null;
// Şekilleri dolaşır ve bulunan tabloya bir referans atar
foreach (IShape shp in sld.Shapes)
if (shp is ITable)
tbl = (ITable)shp;
// İkinci satırın birinci sütununa metin ayarlar
tbl[0, 1].TextFrame.Text = "New";
// Değiştirilmiş sunumu diske kaydeder
pres.Save("table1_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Tabloda Metni Hizalama
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeks üzerinden alın.
- Slayta bir ITable nesnesi ekleyin.
- Tablodan bir ITextFrame nesnesine erişin.
- ITextFrame içinde bir IParagraph’a erişin.
- Metni dikey olarak hizalayın.
- Değiştirilmiş sunumu kaydedin.
Bu C# kodu, bir tabloda metni nasıl hizalayacağınızı gösterir:
// Creates an instance of the Presentation class
Presentation presentation = new Presentation();
// Gets the first slide
ISlide slide = presentation.Slides[0];
// Defines columns with widths and rows with heights
double[] dblCols = { 120, 120, 120, 120 };
double[] dblRows = { 100, 100, 100, 100 };
// Adds the table shape to the slide
ITable tbl = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
tbl[1, 0].TextFrame.Text = "10";
tbl[2, 0].TextFrame.Text = "20";
tbl[3, 0].TextFrame.Text = "30";
// Accesses the text frame
ITextFrame txtFrame = tbl[0, 0].TextFrame;
// Creates the Paragraph object for the text frame
IParagraph paragraph = txtFrame.Paragraphs[0];
// Creates the Portion object for paragraph
IPortion portion = paragraph.Portions[0];
portion.Text = "Text here";
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
// Aligns the text vertically
ICell cell = tbl[0, 0];
cell.TextAnchorType = TextAnchorType.Center;
cell.TextVerticalType = TextVerticalType.Vertical270;
// Saves the presentation to disk
presentation.Save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
Tablo Düzeyinde Metin Biçimlendirmesini Ayarlama
- Presentation sınıfının bir örneğini oluşturun.
- Slaytın referansını indeks üzerinden alın.
- Slayttan bir ITable nesnesine erişin.
- Metin için FontHeight değerini ayarlayın.
- Alignment ve MarginRight özelliklerini ayarlayın.
- TextVerticalType değerini belirleyin.
- Değiştirilmiş sunumu kaydedin.
Bu C# 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 presentation = new Presentation();
ISlide slide = presentation.Slides[0];
ITable someTable = presentation.Slides[0].Shapes[0] as ITable; // İlk slayttaki ilk şeklin bir tablo olduğunu varsayalım
// Sets the table cells' font height
PortionFormat portionFormat = new PortionFormat();
portionFormat.FontHeight = 25;
someTable.SetTextFormat(portionFormat);
// Sets the table cells' text alignment and right margin in one call
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.Alignment = TextAlignment.Right;
paragraphFormat.MarginRight = 20;
someTable.SetTextFormat(paragraphFormat);
// Sets the table cells' text vertical type
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.TextVerticalType = TextVerticalType.Vertical;
someTable.SetTextFormat(textFrameFormat);
presentation.Save("result.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
Tablo Stil Özelliklerini Almak
Aspose.Slides, bir tablonun stil özelliklerini almanıza olanak tanır; bu ayrıntıları başka bir tabloya ya da başka bir yere uygulayabilirsiniz. Bu C# kodu, bir tablo ön tanımlı stilinden stil özelliklerini nasıl alacağınızı gösterir:
using (Presentation pres = new Presentation())
{
ITable table = pres.Slides[0].Shapes.AddTable(10, 10, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
table.StylePreset = TableStylePreset.DarkStyle1; // varsayılan stil ön ayar temasını değiştir
pres.Save("table.pptx", SaveFormat.Pptx);
}
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 AspectRatioLocked özelliğini sunar.
Bu C# kodu, bir tablo için en–boy oranını nasıl kilitleyeceğinizi gösterir:
using (Presentation pres = new Presentation("pres.pptx"))
{
ITable table = (ITable)pres.Slides[0].Shapes[0];
Console.WriteLine($"Lock aspect ratio set: {table.ShapeLock.AspectRatioLocked}");
table.ShapeLock.AspectRatioLocked = !table.ShapeLock.AspectRatioLocked; // tersine çevir
Console.WriteLine($"Lock aspect ratio set: {table.ShapeLock.AspectRatioLocked}");
pres.Save("pres-out.pptx", SaveFormat.Pptx);
}
SSS
Bir tablonun ve hücrelerindeki metnin tümü için sağdan sola (RTL) okuma yönünü etkinleştirebilir miyim?
Evet. Tablo, bir RightToLeft özelliği sunar ve paragraflar da ParagraphFormat.RightToLeft özelliğine sahiptir. İkisini birlikte kullanmak, hücre içindeki doğru RTL sırasını ve renderlamasını sağlar.
Kullanıcıların son dosyada bir tabloyu taşımasını veya yeniden boyutlandırmasını nasıl engelleyebilirim?
shape locks özelliğini kullanarak taşıma, yeniden boyutlandırma, seçim vb. işlemleri devre dışı bırakın. Bu kilitlemeler tablolara da uygulanır.
Bir hücrenin içinde bir resmi arka plan olarak eklemek destekleniyor mu?
Evet. Bir hücre için bir picture fill ayarlayabilirsiniz; görüntü, seçilen moda (esneme veya döşeme) göre hücre alanını kaplar.