مدیریت سلولهای جدول در ارائهها در .NET
نمای کلی
Aspose.Slides به شما امکان دسترسی و اصلاح سلولهای جدول در ارائههای PowerPoint را میدهد. این مقاله نحوه شناسایی سلولهای ترکیبشده در جدول، حذف حاشیههای سلول، کار با شمارهگذاری سلول پس از ترکیب یا تقسیم سلولها، تغییر رنگ پسزمینهٔ سلول و افزودن تصویر داخل سلول جدول را توضیح میدهد. مثالها نشان میدهند چگونه یک ارائه را ایجاد یا باز کنید، جدول را از یک اسلاید دریافت کنید، قالببندی سلول را از طریق ویژگیهای سلول بهروزرسانی کنید و ارائهٔ اصلاحشده را بهصورت فایل PPTX ذخیره کنید.
شناسایی سلول ترکیبشده در جدول
- یک نمونه از کلاس Presentation ایجاد کنید.
- جدول را از اولین اسلاید دریافت کنید.
- از ردیفها و ستونهای جدول عبور کنید تا سلولهای ترکیبشده را پیدا کنید.
- زمانی که سلولهای ترکیبشده پیدا شد پیام چاپ کنید.
using (Presentation pres = new Presentation("SomePresentationWithTable.pptx"))
{
ITable table = pres.Slides[0].Shapes[0] as ITable; // با فرض اینکه Slide#0.Shape#0 یک جدول است
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Columns.Count; j++)
{
ICell currentCell = table.Rows[i][j];
if (currentCell.IsMergedCell)
{
Console.WriteLine(string.Format("Cell {0};{1} is a part of merged cell with RowSpan={2} and ColSpan={3} starting from Cell {4};{5}.",
i, j, currentCell.RowSpan, currentCell.ColSpan, currentCell.FirstRowIndex, currentCell.FirstColumnIndex));
}
}
}
}
حذف حاشیههای سلول جدول
- یک نمونه از کلاس
Presentationایجاد کنید. - مرجع یک اسلاید را از طریق ایندکس آن دریافت کنید.
- یک آرایه از ستونها با عرض تعریف کنید.
- یک آرایه از ردیفها با ارتفاع تعریف کنید.
- از متد
AddTableبرای افزودن جدول به اسلاید استفاده کنید. - از هر سلول عبور کنید تا حاشیههای بالا، پایین، راست و چپ را پاک کنید.
- ارائهٔ اصلاحشده را بهصورت فایل PPTX ذخیره کنید.
// یک شی از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
using (Presentation pres = new Presentation())
{
// دسترسی به اسلاید اول
Slide sld = (Slide)pres.Slides[0];
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
double[] dblCols = { 50, 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// شکل جدول را به اسلاید اضافه میکند
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// قالب حاشیه را برای هر سلول تنظیم میکند
foreach (IRow row in tbl.Rows)
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.NoFill;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.NoFill;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.NoFill;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.NoFill;
}
// فایل PPTX را بر روی دیسک مینویسد
pres.Save("table_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
شمارهگذاری در سلولهای ترکیبشده
اگر دو جفت سلول (1, 1) × (2, 1) و (1, 2) × (2, 2) را ترکیب کنیم، جدول حاصل شمارهگذاری میشود. این کد C# فرایند را نشان میدهد:
// یک شی از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
using (Presentation presentation = new Presentation())
{
// به اولین اسلاید دسترسی مییابد
ISlide sld = presentation.Slides[0];
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// یک شکل جدول را به اسلاید اضافه میکند
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// قالب حاشیه را برای هر سلول تنظیم میکند
foreach (IRow row in tbl.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// سلولهای (1, 1) × (2, 1) را ترکیب میکند
tbl.MergeCells(tbl[1, 1], tbl[2, 1], false);
// سلولهای (1, 2) × (2, 2) را ترکیب میکند
tbl.MergeCells(tbl[1, 2], tbl[2, 2], false);
presentation.Save("MergeCells_out.pptx", SaveFormat.Pptx);
}
سپس سلولها را بیشتر ترکیب میکنیم با ترکیب (1, 1) و (1, 2). نتیجه جدولی است که یک سلول بزرگ ترکیبشده در مرکز دارد:
// یک شی از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
using (Presentation presentation = new Presentation())
{
// به اسلاید اول دسترسی مییابد
ISlide slide = presentation.Slides[0];
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// یک شکل جدول را به اسلاید اضافه میکند
ITable table = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
// قالب حاشیه را برای هر سلول تنظیم میکند
foreach (IRow row in table.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// سلولهای (1, 1) × (2, 1) را ترکیب میکند
table.MergeCells(table[1, 1], table[2, 1], false);
// سلولهای (1, 2) × (2, 2) را ترکیب میکند
table.MergeCells(table[1, 2], table[2, 2], false);
// سلولهای (1, 2) × (2, 2) را ترکیب میکند
table.MergeCells(table[1, 1], table[1, 2], true);
// فایل PPTX را بر روی دیسک مینویسد
presentation.Save("MergeCells1_out.pptx", SaveFormat.Pptx);
}
شمارهگذاری در سلول تقسیمشده
در مثالهای قبلی، زمانی که سلولهای جدول ترکیب شدند، شمارهگذاری یا سیستم عددی در سلولهای دیگر تغییر نکرد.
این بار، یک جدول معمولی (جدولی بدون سلولهای ترکیبشده) میگیریم و سپس سعی میکنیم سلول (1,1) را تقسیم کنیم تا جدولی ویژه به دست آوریم. شاید به شمارهگذاری این جدول توجه کنید که ممکن است عجیب به نظر برسد. با این حال، این همان روشی است که Microsoft PowerPoint سلولهای جدول را شمارهگذاری میکند و Aspose.Slides نیز به همین شکل عمل میکند.
// یک شی از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
using (Presentation presentation = new Presentation())
{
// به اسلاید اول دسترسی مییابد
ISlide slide = presentation.Slides[0];
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// یک شکل جدول را به اسلاید اضافه میکند
ITable table = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
// قالب حاشیه را برای هر سلول تنظیم میکند
foreach (IRow row in table.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// سلولهای (1, 1) × (2, 1) را ترکیب میکند
table.MergeCells(table[1, 1], table[2, 1], false);
// سلولهای (1, 2) × (2, 2) را ترکیب میکند
table.MergeCells(table[1, 2], table[2, 2], false);
// سلول (1, 1) را تقسیم میکند.
table[1, 1].SplitByWidth(table[2, 1].Width / 2);
// فایل PPTX را بر روی دیسک مینویسد
presentation.Save("CellSplit_out.pptx", SaveFormat.Pptx);
}
تغییر رنگ پسزمینهٔ سلول جدول
این کد C# نشان میدهد چگونه رنگ پسزمینهٔ یک سلول جدول را تغییر دهید:
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 50, 50, 50, 50, 50 };
// یک جدول جدید ایجاد میکند
ITable table = slide.Shapes.AddTable(50, 50, dblCols, dblRows);
// رنگ پسزمینه را برای یک سلول تنظیم میکند
ICell cell = table[2, 3];
cell.CellFormat.FillFormat.FillType = FillType.Solid;
cell.CellFormat.FillFormat.SolidFillColor.Color = Color.Red;
presentation.Save("cell_background_color.pptx", SaveFormat.Pptx);
}
افزودن تصویر داخل سلول جدول
- یک نمونه از کلاس
Presentationایجاد کنید. - مرجع یک اسلاید را از طریق ایندکس آن دریافت کنید.
- یک آرایه از ستونها با عرض تعریف کنید.
- یک آرایه از ردیفها با ارتفاع تعریف کنید.
- از متد
AddTableبرای افزودن جدول به اسلاید استفاده کنید. - یک شیء
Bitmapایجاد کنید تا فایل تصویر را نگه دارد. - تصویر bitmap را به شیء
IPPImageاضافه کنید. FillFormatسلول جدول را بهPictureتنظیم کنید.- تصویر را به اولین سلول جدول اضافه کنید.
- ارائهٔ اصلاحشده را بهصورت فایل PPTX ذخیره کنید.
// یک شی از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
using (Presentation presentation = new Presentation())
{
// به اسلاید اول دسترسی مییابد
ISlide slide = presentation.Slides[0];
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 100, 100, 100, 100, 90 };
// یک شکل جدول را به اسلاید اضافه میکند
ITable table = slide.Shapes.AddTable(50, 50, dblCols, dblRows);
// یک تصویر را از فایل بارگذاری میکند و به منابع ارائه اضافه میدارد
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = presentation.Images.AddImage(image);
image.Dispose();
// تصویر را به اولین سلول جدول اضافه میکند
table[0, 0].CellFormat.FillFormat.FillType = FillType.Picture;
table[0, 0].CellFormat.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Stretch;
table[0, 0].CellFormat.FillFormat.PictureFillFormat.Picture.Image = ppImage;
// فایل PPTX را بر روی دیسک ذخیره میکند
presentation.Save("Image_In_TableCell_out.pptx", SaveFormat.Pptx);
}
سؤالات متداول
آیا میتوانم ضخامت و سبک خطوط مختلفی برای سمتهای مختلف یک سلول تنظیم کنم؟
بله. حاشیههای بالا/پایین/چپ/راست دارای ویژگیهای جداگانهای هستند، بنابراین ضخامت و سبک هر سمت میتواند متفاوت باشد. این منطق از کنترل حاشیه بهازای هر سمت برای یک سلول که در مقاله نشان داده شد، ناشی میشود.
اگر پس از تنظیم تصویر بهعنوان پسزمینهٔ سلول، اندازهٔ ستون/ردیف را تغییر دهم، چه اتفاقی برای تصویر میافتد؟
رفتار به حالت پر کردن (کشیدگی/کاشی) بستگی دارد. در حالت کشیدگی، تصویر با سلول جدید سازگار میشود؛ در حالت کاشی، کاشیها بازمحاسبه میشوند. مقاله به حالتهای نمایش تصویر در یک سلول اشاره میکند.
آیا میتوانم یک پیوند (hyperlink) را به تمام محتوای یک سلول اختصاص دهم؟
Hyperlinks در سطح متن (بخش) داخل چارچوب متن سلول یا در سطح کل جدول/شکل تنظیم میشوند. در عمل، پیوند را به یک بخش یا به تمام متن داخل سلول اختصاص میدهید.
آیا میتوانم فونتهای مختلفی را در یک سلول استفاده کنم؟
بله. چارچوب متن سلول از بخشها (run) با قالببندی مستقل—خانوادهٔ فونت، سبک، اندازه و رنگ—پشتیبانی میکند.