.NET içinde Tablolarla Nasıl Çalışılır

.NET içinde Tablolarla Nasıl Çalışılır

Aspose.Slides FOSS for .NET supports creating tables on slides with configurable column widths and row heights. This guide shows how to add a table, populate it with data, and apply basic text formatting to cells.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

dotnet add package Aspose.Slides.Foss

Adım 2: Bir Sunum Oluşturun veya Açın

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
// ... add table ...
prs.Save("table.pptx", SaveFormat.Pptx);

Adım 3: Sütun Genişliklerini ve Satır Yüksekliklerini Tanımlayın

Tablolar, nokta cinsinden (1 nokta = 1/72 inç) açık sütun genişlikleri ve satır yükseklikleri gerektirir. Standart bir slayt 720 nokta genişliğinde ve 540 nokta yüksekliğindedir.

var colWidths = new double[] { 200.0, 150.0, 150.0 };   // 3 columns
var rowHeights = new double[] { 45.0, 40.0, 40.0 };     // 3 rows

Adım 4: Tabloyu Ekleyin

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) tabloyu konumda oluşturur (x, y):

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 200.0, 150.0, 150.0 };
var rowHeights = new double[] { 45.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 100, colWidths, rowHeights);

prs.Save("table.pptx", SaveFormat.Pptx);

Adım 5: Hücre Metnini Ayarlayın

Hücrelere şunun aracılığıyla erişin table.Rows[rowIndex][colIndex] ve metni şunun aracılığıyla atayın .TextFrame.Text:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 200.0, 150.0, 150.0 };
var rowHeights = new double[] { 45.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 100, colWidths, rowHeights);

// Header row (row 0)
string[] headers = { "Product", "Units Sold", "Revenue" };
for (int col = 0; col < headers.Length; col++)
    table.Rows[0][col].TextFrame.Text = headers[col];

// Data rows
string[][] data = {
    new[] { "Widget A", "1,200", "$24,000" },
    new[] { "Widget B", "850", "$17,000" },
};
for (int rowIdx = 0; rowIdx < data.Length; rowIdx++)
    for (int col = 0; col < data[rowIdx].Length; col++)
        table.Rows[rowIdx + 1][col].TextFrame.Text = data[rowIdx][col];

prs.Save("sales-table.pptx", SaveFormat.Pptx);

Adım 6: Başlık Hücre Metnini Biçimlendirin

Üstbilgi hücrelerine kalın biçimlendirme uygulamak için şunu kullanın PortionFormat:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;

for (int col = 0; col < headers.Length; col++)
{
    var cell = table.Rows[0][col];
    var portions = cell.TextFrame.Paragraphs[0].Portions;
    if (portions.Count > 0)
    {
        var fmt = portions[0].PortionFormat;
        fmt.FontBold = NullableBool.True;
        fmt.FillFormat.FillType = FillType.Solid;
        fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 255, 255, 255);
    }
}

Tam Çalışan Örnek

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

string[][] dataRows = {
    new[] { "North", "$1.2M", "+8%" },
    new[] { "South", "$0.9M", "+4%" },
    new[] { "East",  "$1.5M", "+12%" },
    new[] { "West",  "$0.7M", "+2%" },
};
string[] headers = { "Region", "Revenue", "Growth" };

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 180.0, 140.0, 120.0 };
var rowHeights = new double[dataRows.Length + 1];
rowHeights[0] = 45.0;
for (int i = 1; i < rowHeights.Length; i++) rowHeights[i] = 38.0;

var table = slide.Shapes.AddTable(60, 80, colWidths, rowHeights);

// Header row
for (int col = 0; col < headers.Length; col++)
{
    var cell = table.Rows[0][col];
    cell.TextFrame.Text = headers[col];
    if (cell.TextFrame.Paragraphs[0].Portions.Count > 0)
    {
        var fmt = cell.TextFrame.Paragraphs[0].Portions[0].PortionFormat;
        fmt.FontBold = NullableBool.True;
    }
}

// Data rows
for (int rowIdx = 0; rowIdx < dataRows.Length; rowIdx++)
    for (int col = 0; col < dataRows[rowIdx].Length; col++)
        table.Rows[rowIdx + 1][col].TextFrame.Text = dataRows[rowIdx][col];

prs.Save("regional-revenue.pptx", SaveFormat.Pptx);
Console.WriteLine("Saved regional-revenue.pptx");

Yaygın Sorunlar ve Çözümler

IndexOutOfRangeException erişirken table.Rows[row][col]

Satır ve sütun indeksleri sıfır tabanlıdır. Eğer tanımladıysanız rowHeights 3 öğeli ise, geçerli satır indeksleri 0, 1, 2’dir.

Hücre metni kaydedilen dosyada görünmüyor

Her zaman şunun aracılığıyla atayın .TextFrame.Text, şunun aracılığıyla değil .Text hücre nesnesi üzerinde doğrudan:

// Correct
table.Rows[0][0].TextFrame.Text = "Header";

// Wrong: will not compile or silent failure
// table.Rows[0][0].Text = "Header";

Tablo konumu slaytın dışına çıkıyor

Şunun kontrol edildiğinden emin olun x + sum(colWidths) <= 720 ve y + sum(rowHeights) <= 540 standart bir slayt için.


Sık Sorulan Sorular

Tablo hücrelerini birleştirebilir miyim?

Hücre birleştirme bu sürümde desteklenmiyor.

Tablo genelinde arka plan rengi uygulayabilir miyim?

Dolgu biçimlendirmesini her bir hücreye uygulayın:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;

for (int row = 0; row < table.Rows.Count; row++)
    for (int col = 0; col < table.Rows[row].Count; col++)
    {
        var cell = table.Rows[row][col];
        cell.CellFormat.FillFormat.FillType = FillType.Solid;
        cell.CellFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 240, 248, 255);
    }

Hücre kenarlık stillerini ayarlayabilir miyim?

Hücre kenar özelliklerine şunun aracılığıyla erişilebilir cell.CellFormat.BorderLeft, BorderTop, BorderRight, ve BorderBottom özellikler. Kenar biçimlendirme özniteliklerinin tam listesi için API referansına bakın.


Ayrıca Bakınız

 Türkçe