Πώς να εργαστείτε με πίνακες στο .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: Εγκατάσταση του πακέτου

dotnet add package Aspose.Slides.Foss

Βήμα 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 για μια τυπική διαφάνεια.


Συχνές Ερωτήσεις

Μπορώ να συγχωνεύσω κελιά πίνακα;?

Η συγχώνευση κελιών δεν υποστηρίζεται σε αυτήν την έκδοση.

Μπορώ να εφαρμόσω χρώμα φόντου σε όλο τον πίνακα;?

Εφαρμόστε μορφοποίηση γεμίσματος σε κάθε μεμονωμένο κελί:

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


Δείτε επίσης

 Ελληνικά