Kuinka työskennellä taulukoiden kanssa .NETissä

Kuinka työskennellä taulukoiden kanssa .NETissä

Aspose.Slides FOSS for .NET tukee taulukoiden luomista dioihin, joissa sarakeleveydet ja rivikorkeudet ovat määritettävissä. Tämä opas näyttää, miten lisätä taulukko, täyttää se tiedoilla ja soveltaa perustekstin muotoilua soluihin.

Vaiheittainen opas

Vaihe 1: Asenna paketti

dotnet add package Aspose.Slides.Foss

Vaihe 2: Luo tai avaa esitys

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

Vaihe 3: Määritä sarakkeiden leveydet ja rivien korkeudet

Taulukoiden on määritettävä sarakkeiden leveydet ja rivien korkeudet pisteinä (1 piste = 1/72 tuumaa). Standardi dia on 720 pistettä leveä ja 540 pistettä korkea.

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

Vaihe 4: Lisää taulukko

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) luo taulukon sijaintiin (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);

Vaihe 5: Aseta solun teksti

Käytä soluja table.Rows[rowIndex][colIndex] kautta ja määritä teksti .TextFrame.Text kautta:

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

Vaihe 6: Muotoile otsikkosolun teksti

Käytä lihavointimuotoilua otsikkosoluihin käyttäen 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);
    }
}

Täydellinen toimiva esimerkki

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

Yleisiä ongelmia ja korjauksia

IndexOutOfRangeException kun avataan table.Rows[row][col]

Rivi- ja sarakeindeksit ovat nollapohjaisia. Jos määritit rowHeights kolmella elementillä, kelvolliset rivi-indeksit ovat 0, 1, 2.

Solun teksti ei näy tallennetussa tiedostossa

Aseta aina .TextFrame.Text:n kautta, älä suoraan .Text:n kautta solmuobjektiin:

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

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

Taulukon sijainti on diasta pois

Tarkista, että x + sum(colWidths) <= 720 ja y + sum(rowHeights) <= 540 standardiselle dialle.


Usein kysytyt kysymykset

Voinko yhdistää taulukon solut?

Kyllä. Käytä Table.MergeCells(ICell cell1, ICell cell2, bool allowSplitting) yhdistääksesi kaksi vierekkäistä solua. Aseta allowSplitting arvoon false estääksesi yhdistetyn solun jakautumisen uudelleen. Esimerkki:

// Merge cell (row 0, col 0) with cell (row 0, col 1)
var cell1 = table.Rows[0][0];
var cell2 = table.Rows[0][1];
table.MergeCells(cell1, cell2, false);

Voinko käyttää taulukon laajuista taustaväriä?

Käytä täyttömuotoilua jokaisessa yksittäisessä solussa:

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

Voinko asettaa solun reunojen tyylejä?

Solun reunojen ominaisuudet ovat käytettävissä cell.CellFormat.BorderLeft, BorderTop, BorderRight ja BorderBottom-ominaisuuksien kautta. Katso API‑viitteestä täydellinen luettelo reunojen muotoilun attribuuteista.


Katso myös

 Suomi