כיצד לעבוד עם טבלאות ב‑.NET

כיצד לעבוד עם טבלאות ב‑.NET

Aspose.Slides FOSS for .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 עבור שקף סטנדרטי.


שאלות נפוצות

האם אני יכול למזג תאים בטבלה?

כן. השתמש ב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 לקבלת רשימה מלאה של מאפייני פורמט הגבול.


ראה גם

 עברית