كيفية العمل مع اللوحات في .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: قم بتثبيت الحزمة

aspose-slides-foss/slides is not yet published — build from source until it ships. See the project README for build instructions.


الخطوة 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 بوصة).

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

الخطوة الخامسة: إعداد النص الخلوي

الوصول إلى الخلايا عبر 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 لـ Slide Standard .


الأسئلة المتكررة

هل يمكنني دمج الخلايا المكتبية؟?

نعم - استخدام 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 لقائمة كاملة من خصائصه تنسيق الحدود.


انظر أيضا

 العربية