چگونه با جداول در .NET کار کنیم
Aspose.Slides FOSS برای .NET از ایجاد جداول در اسلایدها با عرض ستونها و ارتفاع ردیفهای قابل تنظیم پشتیبانی میکند. این راهنما نشان میدهد چگونه یک جدول اضافه کنید، آن را با دادهها پر کنید و قالببندی متن پایه را بر روی سلولها اعمال کنید.
راهنمای گام به گام
مرحله 1: نصب بسته
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);مرحله ۳: تعریف عرض ستونها و ارتفاع ردیفها
جداول به عرض ستونها و ارتفاع ردیفها به صورت صریح بر حسب نقطه نیاز دارند (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مرحله ۴: افزودن جدول
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);مرحله ۶: قالببندی متن سلول سرصفحه
قالببندی پررنگ را برای سلولهای سرصفحه با استفاده از 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 را با ۳ عنصر تعریف کرده باشید، شاخصهای ردیف معتبر ۰، ۱، ۲ هستند.
متن سلول در فایل ذخیرهشده ظاهر نمیشود
همیشه از طریق .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 مراجعه کنید.