Sådan arbejder du med tabeller i .NET

Sådan arbejder du med tabeller i .NET

Aspose.Slides FOSS for .NET understøtter oprettelse af tabeller på dias med konfigurerbare kolonnebredder og rækkehøjder. Denne vejledning viser, hvordan du tilføjer en tabel, udfylder den med data og anvender grundlæggende tekstformatering på celler.

Trin-for-trin Guide

Trin 1: Installer pakken

dotnet add package Aspose.Slides.Foss

Trin 2: Opret eller åbn en præsentation

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

Trin 3: Definer kolonnebredder og rækkehøjder

Tabeller kræver eksplicitte kolonnebredder og rækkehøjder i point (1 point = 1/72 tomme). Et standard slide er 720 point bredt og 540 point højt.

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

Trin 4: Tilføj tabellen

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) opretter tabellen på 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);

Trin 5: Indstil celletekst

Få adgang til celler via table.Rows[rowIndex][colIndex] og tildel tekst gennem .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);

Trin 6: Formater overskriftscelletekst

Anvend fed formatering på overskriftsceller ved hjælp af 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);
    }
}

Komplet Arbejdseksempel

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

Almindelige problemer og rettelser

IndexOutOfRangeException ved adgang til table.Rows[row][col]

Række- og kolonneindekser er nulbaserede. Hvis du definerede rowHeights med 3 elementer, er gyldige rækkeindekser 0, 1, 2.

Celletekst vises ikke i den gemte fil

Tildel altid via .TextFrame.Text, ikke via .Text direkte på celleobjektet:

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

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

Tabelposition er uden for sliden

Kontroller, at x + sum(colWidths) <= 720 og y + sum(rowHeights) <= 540 for en standard slide.


Ofte stillede spørgsmål

Kan jeg flette tabelceller?

Cellefletning understøttes ikke i denne udgave.

Kan jeg anvende en baggrundsfarve på hele tabellen?

Anvend udfyldningsformatering på hver enkelt celle:

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

Kan jeg indstille cellekantstile?

Cellekant‑egenskaber er tilgængelige via cell.CellFormat.BorderLeft, BorderTop, BorderRight og BorderBottom‑egenskaber. Se API‑referencen for den fulde liste over kantformatattributter.


Se også

 Dansk