Πώς να εργάζεστε με πίνακες στο .NET

Πώς να εργάζεστε με πίνακες στο .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 για την πλήρη λίστα των χαρακτηριστικών του μορφής σύνορα.


Δείτε επίσης

 Ελληνικά