Πώς να εργάζεστε με πίνακες στο .NET
Aspose.Slides FOSS for .NET supports creating tables on slides with configurable column widths and row heights. This guide shows how to add a table, populate it with data, and apply basic text formatting to cells.
Βήμα προς βήμα οδηγός
Βήμα 1: Εγκατάσταση του πακέτου
aspose-slides-foss/slides is not yet published — build from source until it ships. See the project README for build instructions.
Βήμα 2: Δημιουργήστε ή ανοίξτε μια παρουσίαση
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);Βήμα 3: Ορισμός των κελιών πλάτους και τα ύψη στήλης
Οι πίνακες απαιτούν ρητά πλάτους στήλης και ύψους γραμμής σε σημεία (1 σημείο = 1/72 ίντσες). Ένα τυποποιημένο χαλί είναι 720 σημείων ευρύς και 540 σημείου ψηλό.
var colWidths = new double[] { 200.0, 150.0, 150.0 }; // 3 columns
var rowHeights = new double[] { 45.0, 40.0, 40.0 }; // 3 rowsΒήμα 4: Προσθέστε το τραπέζι
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) Δημιουργεί το τραπέζι στη θέση (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: Εισάγετε κείμενο κυττάρου
Μέσω των κυττάρων πρόσβασης table.Rows[rowIndex][colIndex] και να αποστέλλουν το κείμενο μέσω .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: Καθορίστε το κείμενο κύτταρο κεφαλής
Εφαρμόστε το θάρρος διατύπωση σε κύτταρα επικεφαλής χρησιμοποιώντας 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);
}
}ΕΠΙΛΗΜΑΤΙΚΟ ΔΡΑΣΤΗΡΙΟ ΠΡΟΒΛΕΜΟ
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");Κοινά προβλήματα και τακτοποιήσεις
IndexOutOfRangeException Όταν η πρόσβαση table.Rows[row][col]
Οι δείκτες στήλης και στίχους είναι μηδενικές. αν ορίζετε rowHeights Με 3 στοιχεία, οι έγκυροι δείκτες γραμμής είναι 0, 1, 2.
Το κείμενο δεν εμφανίζεται στο αποθηκευμένο αρχείο
Πάντα να αναθέτουμε μέσα από .TextFrame.Text,Όχι μέσα από .Text Αμέσως στο αντικείμενο του κυττάρου:
// Correct
table.Rows[0][0].TextFrame.Text = "Header";
// Wrong: will not compile or silent failure
// table.Rows[0][0].Text = "Header";Η θέση του τραπέζου είναι εκτός της σάκας
Δείτε αυτό x + sum(colWidths) <= 720 και y + sum(rowHeights) <= 540 Για ένα τυποποιημένο slide.
Συχνές ερωτήσεις
Μπορώ να συγχωνεύσω τα τραπεζογραμμάτια;?
Ναι, χρησιμοποιήστε το Table.MergeCells(ICell cell1, ICell cell2, bool allowSplitting) για να συγχωνεύσει δύο πλησιέστερα κύτταρα. allowSplitting Για να false Για να αποφευχθεί η συγχώνευση του κυττάρου από το διαχωρισμό ξανά.Πρόδειγμα:
// 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);Μπορώ να εφαρμόσω ένα χρώμα πλάτους πίνακα;?
Εφαρμόστε τη φόρμα πληρώσεως σε κάθε ατομική κελία:
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);
}Μπορώ να βάλω τα στυλ των κυττάρων;?
Τα κελιά των συνόρων είναι προσβάσιμα μέσω cell.CellFormat.BorderLeft, BorderTop, BorderRight,και BorderBottom Αναφέρεται στην αναφορά API για την πλήρη λίστα των χαρακτηριστικών του μορφής σύνορα.