Wie man mit Tabellen in .NET arbeitet

Wie man mit Tabellen in .NET arbeitet

Aspose.Slides FOSS for .NET unterstützt das Erstellen von Tabellen auf Folien mit konfigurierbaren Spaltenbreiten und Zeilenhöhen. Dieser Leitfaden zeigt, wie man eine Tabelle hinzufügt, sie mit Daten füllt und grundlegende Textformatierung auf Zellen anwendet.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

dotnet add package Aspose.Slides.Foss

Schritt 2: Präsentation erstellen oder öffnen

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);

Schritt 3: Spaltenbreiten und Zeilenhöhen definieren

Tabellen erfordern explizite Spaltenbreiten und Zeilenhöhen in Punkten (1 Punkt = 1/72 Zoll). Eine Standardfolie ist 720 Punkte breit und 540 Punkte hoch.

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

Schritt 4: Tabelle hinzufügen

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) erstellt die Tabelle an Position (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);

Schritt 5: Zellentext festlegen

Greifen Sie über table.Rows[rowIndex][colIndex] auf Zellen zu und weisen Sie Text über .TextFrame.Text zu:

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);

Schritt 6: Header‑Zelltext formatieren

Wenden Sie die fette Formatierung auf Kopfzeilenzellen mit PortionFormat an:

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);
    }
}

Vollständiges funktionierendes Beispiel

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");

Häufige Probleme und Lösungen

IndexOutOfRangeException beim Zugriff auf table.Rows[row][col]

Zeilen- und Spaltenindizes beginnen bei Null. Wenn Sie rowHeights mit 3 Elementen definiert haben, sind gültige Zeilenindizes 0, 1, 2.

Zelltext erscheint nicht in der gespeicherten Datei

Weisen Sie immer über .TextFrame.Text zu, nicht direkt über .Text auf dem Zellenobjekt:

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

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

Tabellenposition liegt außerhalb der Folie

Überprüfen Sie, dass x + sum(colWidths) <= 720 und y + sum(rowHeights) <= 540 für eine Standardfolie.


Häufig gestellte Fragen

Kann ich Tabellenzellen zusammenführen?

Das Zusammenführen von Zellen wird in dieser Edition nicht unterstützt.

Kann ich eine tabellenweite Hintergrundfarbe anwenden?

Füllenformatierung auf jede einzelne Zelle anwenden:

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);
    }

Kann ich Zellrandstile festlegen?

Zellrand‑Eigenschaften sind über die Eigenschaften cell.CellFormat.BorderLeft, BorderTop, BorderRight und BorderBottom zugänglich. Siehe die API‑Referenz für die vollständige Liste der Randformatattribute.


Siehe auch

 Deutsch