نحوه کار با جدول‌ها در .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.

راهنمای گام به گام

مرحله ۱: نصب بسته

dotnet add package Aspose.Slides.Foss

مرحله ۲: ایجاد یا باز کردن یک ارائه

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);

مرحله ۳: تعریف عرض ستون‌ها و ارتفاع ردیف‌ها

جدول‌ها نیاز به عرض ستون‌ها و ارتفاع ردیف‌های صریح به واحد پوینت دارند (۱ پوینت = ۱/۷۲ اینچ). یک اسلاید استاندارد عرض ۷۲۰ پوینت و ارتفاع ۵۴۰ پوینت دارد.

var colWidths = new double[] { 200.0, 150.0, 150.0 };   // 3 columns
var rowHeights = new double[] { 45.0, 40.0, 40.0 };     // 3 rows

مرحله ۴: افزودن جدول

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);

مرحله ۵: تنظیم متن سلول

دسترسی به سلول‌ها از طریق 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);

مرحله ۶: قالب‌بندی متن سلول سرصفحه

قالب‌بندی بولد را بر روی سلول‌های سرصفحه با استفاده از اعمال کنید 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 مراجعه کنید.


همچنین ببینید

 فارسی