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šą.