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