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.FossVaihe 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 rowsVaihe 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.