مدیریت جداول ارائه در JavaScript
معرفی
یک جدول در PowerPoint روشی کارآمد برای نمایش و به تصویر کشیدن اطلاعات است. اطلاعات در یک شبکهٔ سلولها (چیدمان شده در ردیفها و ستونها) ساده و به راحتی قابل درک است.
Aspose.Slides کلاس Table، کلاس Cell و انواع دیگر را ارائه میدهد تا بتوانید جداول را در انواع ارائهها ایجاد، بهروزرسانی و مدیریت کنید.
ایجاد جدول از ابتدا
- یک نمونه از کلاس Presentation ایجاد کنید.
- مرجع یک اسلاید را از طریق ایندکس آن به دست آورید.
- یک آرایهٔ
columnWidthتعریف کنید. - یک آرایهٔ
rowHeightتعریف کنید. - یک شیء Table را با استفاده از متد addTable به اسلاید اضافه کنید.
- برای هر Cell تکرار کنید تا قالببندی حاشیههای بالا، پایین، راست و چپ را اعمال کنید.
- دو سلول اول ردیف اول جدول را ادغام کنید.
- به TextFrame یک Cell دسترسی پیدا کنید.
- متنی به TextFrame اضافه کنید.
- ارائهٔ تغییر یافته را ذخیره کنید.
این کد JavaScript نشان میدهد چگونه یک جدول در یک ارائه ایجاد کنید:
// یک شیء از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
var pres = new aspose.slides.Presentation();
try {
// به اولین اسلاید دسترسی پیدا میکند
var sld = pres.getSlides().get_Item(0);
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
var dblCols = java.newArray("double", [50, 50, 50]);
var dblRows = java.newArray("double", [50, 30, 30, 30, 30]);
// یک شکل جدول را به اسلاید اضافه میکند
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// قالب حاشیه را برای هر سلول تنظیم میکند
for (var row = 0; row < tbl.getRows().size(); row++) {
for (var cell = 0; cell < tbl.getRows().get_Item(row).size(); cell++) {
var cellFormat = tbl.getRows().get_Item(row).get_Item(cell).getCellFormat();
cellFormat.getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderTop().setWidth(5);
cellFormat.getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderBottom().setWidth(5);
cellFormat.getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderLeft().setWidth(5);
cellFormat.getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cellFormat.getBorderRight().setWidth(5);
}
}
// سلولهای ۱ و ۲ ردیف ۱ را ادغام میکند
tbl.mergeCells(tbl.getRows().get_Item(0).get_Item(0), tbl.getRows().get_Item(1).get_Item(1), false);
// متنی به سلول ادغامشده اضافه میکند
tbl.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells");
// ارائه را روی دیسک ذخیره میکند
pres.save("table.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
شمارهگذاری در جدول استاندارد
در یک جدول استاندارد، شمارهگذاری سلولها ساده و صفر‑پایه است. اولین سلول در جدول به صورت 0,0 (ستون 0، ردیف 0) ایندکس میشود.
به عنوان مثال، سلولهای یک جدول با ۴ ستون و ۴ ردیف به این شکل شمارهگذاری میشوند:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
این کد JavaScript نشان میدهد چگونه شمارهگذاری سلولهای یک جدول را مشخص کنید:
// یک شیء از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
var pres = new aspose.slides.Presentation();
try {
// به اولین اسلاید دسترسی پیدا میکند
var sld = pres.getSlides().get_Item(0);
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
var dblCols = java.newArray("double", [70, 70, 70, 70]);
var dblRows = java.newArray("double", [70, 70, 70, 70]);
// یک شکل جدول را به اسلاید اضافه میکند
var tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// قالب حاشیه را برای هر سلول تنظیم میکند
for (let i = 0; i < tbl.getRows().size(); i++) {
const row = tbl.getRows().get_Item(i);
for (let j = 0; j < row.size(); j++) {
const cell = row.get_Item(j);
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderTop().setWidth(5);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderBottom().setWidth(5);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderLeft().setWidth(5);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "RED"));
cell.getCellFormat().getBorderRight().setWidth(5);
}
}
// ارائه را روی دیسک ذخیره میکند
pres.save("StandardTables_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
دسترسی به جدول موجود
-
یک نمونه از کلاس Presentation ایجاد کنید.
-
مرجع اسلاید حاوی جدول را از طریق ایندکس آن به دست آورید.
-
یک شیء Table ایجاد کنید و آن را به null تنظیم کنید.
-
در تمام اشیاء Shape تکرار کنید تا جدول یافت شود.
اگر گمان میکنید اسلاید مورد نظر فقط یک جدول دارد، میتوانید تمام اشکال موجود را بررسی کنید. وقتی شکلی به عنوان جدول شناسایی شد، میتوانید آن را به شیء Table تبدیل کنید. اما اگر اسلاید حاوی چند جدول باشد، بهتر است جدول مورد نیاز را از طریق متد setAlternativeText(String value) جستجو کنید.
-
از شیء Table برای کار با جدول استفاده کنید. در مثال زیر، یک ردیف جدید به جدول اضافه کردیم.
-
ارائهٔ تغییر یافته را ذخیره کنید.
این کد JavaScript نشان میدهد چگونه به یک جدول موجود دسترسی پیدا کرده و با آن کار کنید:
// یک شیء از کلاس Presentation که نمایانگر یک فایل PPTX است را ایجاد میکند
var pres = new aspose.slides.Presentation("UpdateExistingTable.pptx");
try {
// به اولین اسلاید دسترسی پیدا میکند
var sld = pres.getSlides().get_Item(0);
// TableEx را به null مقداردهی میکند
var tbl = null;
// در میان اشکال تکرار میکند و مرجع جدول یافتشده را تنظیم میکند
for (let i = 0; i < sld.getShapes().size(); i++) {
let shp = sld.getShapes().get_Item(i);
if (java.instanceOf(shp, "com.aspose.slides.ITable")) {
tbl = shp;
// متن را برای اولین ستون ردیف دوم تنظیم میکند
tbl.get_Item(0, 1).getTextFrame().setText("New");
}
}
// ارائه تغییر یافته را روی دیسک ذخیره میکند
pres.save("table1_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
تراز کردن متن در جدول
- یک نمونه از کلاس Presentation ایجاد کنید.
- مرجع یک اسلاید را از طریق ایندکس آن به دست آورید.
- یک شیء Table را به اسلاید اضافه کنید.
- به شیء TextFrame از جدول دسترسی پیدا کنید.
- به Paragraph مربوط به TextFrame دسترسی پیدا کنید.
- متن را به صورت عمودی تراز کنید.
- ارائهٔ تغییر یافته را ذخیره کنید.
این کد JavaScript نشان میدهد چگونه متن داخل یک جدول را تراز کنید:
// یک نمونه از کلاس Presentation را ایجاد میکند
var pres = new aspose.slides.Presentation();
try {
// اسلاید اول را دریافت میکند
var slide = pres.getSlides().get_Item(0);
// ستونها را با عرضها و ردیفها را با ارتفاعها تعریف میکند
var dblCols = java.newArray("double", [120, 120, 120, 120]);
var dblRows = java.newArray("double", [100, 100, 100, 100]);
// شکل جدول را به اسلاید اضافه میکند
var tbl = slide.getShapes().addTable(100, 50, dblCols, dblRows);
tbl.get_Item(1, 0).getTextFrame().setText("10");
tbl.get_Item(2, 0).getTextFrame().setText("20");
tbl.get_Item(3, 0).getTextFrame().setText("30");
// به فریم متن دسترسی پیدا میکند
var txtFrame = tbl.get_Item(0, 0).getTextFrame();
// شیء Paragraph را برای فریم متن ایجاد میکند
var paragraph = txtFrame.getParagraphs().get_Item(0);
// شیء Portion را برای پاراگراف ایجاد میکند
var portion = paragraph.getPortions().get_Item(0);
portion.setText("Text here");
portion.getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// متن را به صورت عمودی تراز میکند
var cell = tbl.get_Item(0, 0);
cell.setTextAnchorType(aspose.slides.TextAnchorType.Center);
cell.setTextVerticalType(aspose.slides.TextVerticalType.Vertical270);
// ارائه را روی دیسک ذخیره میکند
pres.save("Vertical_Align_Text_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
تنظیم قالببندی متن در سطح جدول
- یک نمونه از کلاس Presentation ایجاد کنید.
- مرجع یک اسلاید را از طریق ایندکس آن به دست آورید.
- به شیء Table از اسلاید دسترسی پیدا کنید.
- برای متن، متد setFontHeight(float value) را تنظیم کنید.
- متدهای setAlignment(int value) و setMarginRight(float value) را تنظیم کنید.
- متد setTextVerticalType(byte value) را تنظیم کنید.
- ارائهٔ تغییر یافته را ذخیره کنید.
این کد JavaScript نشان میدهد چگونه گزینههای قالببندی دلخواه خود را بر متن داخل یک جدول اعمال کنید:
// یک نمونه از کلاس Presentation را ایجاد میکند
var pres = new aspose.slides.Presentation("simpletable.pptx");
try {
// فرض میکنیم که اولین شکل در اولین اسلاید یک جدول است
var someTable = pres.getSlides().get_Item(0).getShapes().get_Item(0);
// ارتفاع قلم سلولهای جدول را تنظیم میکند
var portionFormat = new aspose.slides.PortionFormat();
portionFormat.setFontHeight(25);
someTable.setTextFormat(portionFormat);
// تراز متن سلولهای جدول و حاشیهٔ راست را در یک فراخوانی تنظیم میکند
var paragraphFormat = new aspose.slides.ParagraphFormat();
paragraphFormat.setAlignment(aspose.slides.TextAlignment.Right);
paragraphFormat.setMarginRight(20);
someTable.setTextFormat(paragraphFormat);
// نوع متن عمودی سلولهای جدول را تنظیم میکند
var textFrameFormat = new aspose.slides.TextFrameFormat();
textFrameFormat.setTextVerticalType(aspose.slides.TextVerticalType.Vertical);
someTable.setTextFormat(textFrameFormat);
pres.save("result.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
دریافت ویژگیهای سبک جدول
Aspose.Slides به شما امکان میدهد ویژگیهای سبک یک جدول را بازیابی کنید تا بتوانید این جزئیات را برای جدول دیگری یا مکان دیگری استفاده کنید. این کد JavaScript نشان میدهد چگونه ویژگیهای سبک را از یک سبک پیشفرض جدول دریافت کنید:
var pres = new aspose.slides.Presentation();
try {
var table = pres.getSlides().get_Item(0).getShapes().addTable(10, 10, java.newArray("double", [100, 150]), java.newArray("double", [5, 5, 5]));
table.setStylePreset(aspose.slides.TableStylePreset.DarkStyle1);// قالب پیشفرض استایل را تغییر میدهد
pres.save("table.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
قفل کردن نسبت ابعاد جدول
نسبت ابعاد یک شکل هندسی نسبت اندازههای آن در ابعاد مختلف است. Aspose.Slides ویژگی setAspectRatioLocked را فراهم کرده تا بتوانید تنظیم قفل نسبت ابعاد را برای جداول و سایر اشکال اعمال کنید.
این کد JavaScript نشان میدهد چگونه نسبت ابعاد یک جدول را قفل کنید:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var table = pres.getSlides().get_Item(0).getShapes().get_Item(0);
console.log("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
table.getGraphicalObjectLock().setAspectRatioLocked(!table.getGraphicalObjectLock().getAspectRatioLocked());// معکوس
console.log("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
pres.save("pres-out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
سوالات متداول
آیا میتوانم جهت خواندن از راست به چپ (RTL) را برای کل جدول و متن داخل سلولها فعال کنم؟
بله. جدول متد setRightToLeft را ارائه میدهد و پاراگرافها متد ParagraphFormat.setRightToLeft دارند. استفاده از هر دو روش اطمینان میدهد که ترتیب RTL صحیح باشد و رندرینگ داخل سلولها به درستی انجام شود.
چگونه میتوانم از جابهجایی یا تغییر اندازه جدول توسط کاربران در فایل نهایی جلوگیری کنم؟
از قفلهای شکل استفاده کنید تا جابهجایی، تغییر اندازه، انتخاب و … غیرفعال شود. این قفلها برای جداول نیز اعمال میشوند.
آیا افزودن تصویر به عنوان پسزمینه داخل یک سلول پشتیبانی میشود؟
بله. میتوانید برای یک سلول picture fill تنظیم کنید؛ تصویر بهصورت کشیدهشده یا کاشیمانند ناحیهٔ سلول را پوشش میدهد.