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

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

Το Aspose.Slides FOSS για .NET υποστηρίζει τη δημιουργία πινάκων στις διαφάνειες με ρυθμιζόμενο πλάτος στηλών και ύψος γραμμών. Αυτός ο οδηγός δείχνει πώς να προσθέσετε έναν πίνακα, να τον γεμίσετε με δεδομένα και να εφαρμόσετε βασική μορφοποίηση κειμένου στα κελιά.

Οδηγός βήμα προς βήμα

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


Δείτε επίσης

 Ελληνικά