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.Foss2. 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 rowsSolis 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.