Kā strādāt ar tabulām .NET

Kā strādāt ar tabulām .NET

Aspose.Slides FOSS for .NET atbalsta tabulu izveidi slaidos ar konfigurējamiem kolonnu platumiem un rindu augstumiem. Šajā ceļvedī parādīts, kā pievienot tabulu, aizpildīt to ar datiem un piemērot pamata teksta formatēšanu šūnām.

Solī pa solim ceļvedis

1. solis: instalēt pakotni

dotnet add package Aspose.Slides.Foss

2. solis: Izveidot vai atvērt prezentāciju

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

Solis 3: Definēt kolonu platumus un rindu augstumus

Tabulām jānorāda skaidri kolonnu platumi un rindu augstumi punktos (1 punkts = 1/72 collas). Standarta slaids ir 720 punkti plats un 540 punkti augsts.

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

Solis 4: Pievienot tabulu

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) izveido tabulu pozīcijā (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);

5. solis: Iestatīt šūnas tekstu

Piekļūstiet šūnām caur table.Rows[rowIndex][colIndex] un piešķiriet tekstu caur .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);

6. solis: Formatēt galvenes šūnas tekstu

Pielietojiet treknraksta formatējumu galvenes šūnām, izmantojot 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);
    }
}

Pilns darbos piemērs

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

Biežas problēmas un risinājumi

IndexOutOfRangeException piekļūstot table.Rows[row][col]

Rindas un kolonnu indeksi sākas ar 0. Ja jūs definējāt rowHeights ar 3 elementiem, derīgi rindas indeksi ir 0, 1, 2.

Šūnas teksts neparādās saglabātajā failā

Vienmēr piešķiriet caur .TextFrame.Text, nevis caur .Text tieši uz šūnas objektu:

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

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

Tabulas novietojums ir ārpus slaida

Pārbaudiet, ka x + sum(colWidths) <= 720 un y + sum(rowHeights) <= 540 ir standarta slaidam.


Biežāk uzdotie jautājumi

Vai es varu apvienot tabulas šūnas?

Jā. Izmantojiet Table.MergeCells(ICell cell1, ICell cell2, bool allowSplitting), lai apvienotu divas blakus esošas šūnas. Iestatiet allowSplitting uz false, lai novērstu apvienotās šūnas atkārtotu sadalīšanu. Piemērs:

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

Vai varu piemērot tabulas vispārīgu fona krāsu?

Pielietojiet aizpildīšanas formatējumu katrai atsevišķai šūnai:

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

Vai es varu iestatīt šūnas robežas stilus?

Šūnas robežas īpašības ir pieejamas caur cell.CellFormat.BorderLeft, BorderTop, BorderRight un BorderBottom īpašībām. Skatiet API atsauci, lai iegūtu pilnu robežu formatējuma atribūtu sarakstu.


Skatīt arī

 Latviešu