Kaip dirbti su lentelėmis .NET

Kaip dirbti su lentelėmis .NET

Aspose.Slides FOSS for .NET palaiko lentelių kūrimą skaidrėse su konfigūruojamu stulpelių pločiu ir eilučių aukščiu. Šiame vadove parodyta, kaip pridėti lentelę, užpildyti ją duomenimis ir taikyti pagrindinį teksto formatavimą langeliams.

Žingsnis po žingsnio vadovas

Žingsnis 1: Įdiekite paketą

dotnet add package Aspose.Slides.Foss

Žingsnis 2: Sukurkite arba atidarykite pristatymą

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

Žingsnis 3: Nustatykite stulpelių pločius ir eilučių aukščius

Lentelės reikalauja aiškių stulpelių pločių ir eilučių aukščių taškeliais (1 taškas = 1/72 colio). Standartinė skaidrė yra 720 taškų pločio ir 540 taškų aukščio.

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

Žingsnis 4: Pridėti lentelę

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) sukuria lentelę pozicijoje (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);

Žingsnis 5: Nustatyti langelio tekstą

Pasiekite langelius per table.Rows[rowIndex][colIndex] ir priskirkite tekstą per .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);

Žingsnis 6: Formatuoti antraštės langelio tekstą

Taikykite pusjuodą formatavimą antraštės langeliams naudodami 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);
    }
}

Pilnas veikiantis pavyzdys

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

Dažnos problemos ir sprendimai

IndexOutOfRangeException kai pasiekiama table.Rows[row][col]

Eilutės ir stulpelio indeksai yra nulio pagrindu. Jei apibrėžėte rowHeights su 3 elementais, galimi eilutės indeksai yra 0, 1, 2.

Ląstelės tekstas neatsiranda išsaugotame faile

Visada priskirkite per .TextFrame.Text, o ne per .Text tiesiogiai ląstelės objekte:

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

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

Lentelės pozicija yra už skaidrės ribų

Patikrinkite, ar x + sum(colWidths) <= 720 ir y + sum(rowHeights) <= 540 tinka standartinei skaidrei.


Dažnai užduodami klausimai

Ar galiu sujungti lentelės langelius?

Taip. Naudokite Table.MergeCells(ICell cell1, ICell cell2, bool allowSplitting), kad sujungtumėte du gretimus langelius. Nustatykite allowSplitting į false, kad išvengtumėte sujungto langelio vėl suskaidymo. Pavyzdys:

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

Ar galiu pritaikyti lentelės viso pločio fono spalvą?

Taikykite užpildymo formatavimą kiekvienam atskiram langeliui:

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

Ar galiu nustatyti ląstelių kraštų stilius?

Ląstelės kraštų savybės prieinamos per cell.CellFormat.BorderLeft, BorderTop, BorderRight ir BorderBottom savybes. Žiūrėkite API nuorodą, kad gautumėte visą kraštų formato atributų sąrašą.


Žr. taip pat

 Lietuvių