اعمال فرمولهای برگهکار نمودار در ارائهها با استفاده از جاوااسکریپت
نمای کلی
یک برگهکار نمودار منبع دادهای است که پشت یک نمودار در ارائه قرار دارد. این برگه نامهای دستهبندی و سریها را همراه با مقادیر عددی که توسط نمودار نمایش داده میشود، ذخیره میکند. در Aspose.Slides، این برگهکار از طریق کتابکار دادههای نمودار در دسترس است که به شما امکان کار برنامهنویسی با دادههای نمودار را میدهد.
این مقاله توضیح میدهد چگونه از فرمولهای برگهکار در دادههای نمودار استفاده کنید تا مقادیر سلول بهصورت خودکار محاسبه و بهروز شوند، به جای وارد کردن دستی. نشان میدهد چگونه فرمولها را اختصاص دهید، از ارجاعهای سبک A1 و R1C1 استفاده کنید، فرمولهای کتابکار را دوباره محاسبه کنید و با ثابتها، عملگرها، ارجاعهای سلولی و توابع پیشتعریفشده پشتیبانیشده برای برگهکارهای نمودار در ارائهها کار کنید.
درباره فرمول صفحهگسترده نمودار در ارائه
صفحهگسترده نمودار (یا برگهکار نمودار) در ارائه منبع دادهای برای نمودار است. صفحهگسترده نمودار شامل دادههایی است که بهصورت گرافیکی در نمودار نمایش داده میشوند. هنگامی که یک نمودار در PowerPoint ایجاد میکنید، برگهکار مرتبط با این نمودار بهصورت خودکار نیز ایجاد میشود. برگهکار برای تمام انواع نمودارها ایجاد میشود: نمودار خطی، نمودار میلهای، نمودار خورشیدی، نمودار دایرهای و غیره. برای مشاهده صفحهگسترده نمودار در PowerPoint باید روی نمودار دوبار کلیک کنید:

صفحهگسترده نمودار شامل نامهای عناصر نمودار (نام دسته: Category1، نام سری) و یک جدول با دادههای عددی مناسب برای این دستهها و سریها است. بهصورت پیشفرض، وقتی یک نمودار جدید ایجاد میکنید، دادههای صفحهگسترده نمودار با دادههای پیشفرض تنظیم میشود. سپس میتوانید دادههای صفحهگسترده را بهصورت دستی در برگهکار تغییر دهید.
معمولاً، نمودار دادههای پیچیدهای (مانند تحلیلهای مالی یا علمی) را نشان میدهد که سلولهای آن از مقادیر سلولهای دیگر یا از دادههای پویا محاسبه میشوند. محاسبه دستی مقدار سلول و کدگذاری ثابت آن در سلول، تغییر آن را در آینده دشوار میسازد. اگر مقدار یک سلول خاص را تغییر دهید، تمام سلولهای وابسته به آن نیز باید بهروز شوند. علاوه بر این، دادههای جدول ممکن است به دادههای جداول دیگر وابسته باشند و طرح دادهای پیچیدهای در ارائه ایجاد کنند که نیاز به بهروزرسانی آسان و انعطافپذیر دارد.
فرمول صفحهگسترده نمودار در ارائه عبارت است از یک عبارت برای محاسبه و بهروزرسانی خودکار دادههای صفحهگسترده نمودار. فرمول صفحهگسترده منطق محاسبه داده برای یک سلول یا مجموعهای از سلولها را تعریف میکند. فرمول صفحهگسترده میتواند یک فرمول ریاضی یا منطقی باشد که از: ارجاعهای سلولی، توابع ریاضی، عملگرهای منطقی، عملگرهای حسابی، توابع تبدیل، ثابتهای رشتهای و غیره استفاده میکند. تعریف فرمول در یک سلول نوشته میشود و این سلول یک مقدار ساده نیست. فرمول صفحهگسترده مقدار را محاسبه و برمیگرداند، سپس این مقدار به سلول اختصاص داده میشود. فرمولهای صفحهگسترده در ارائهها در واقع همانند فرمولهای اکسل هستند و توابع، عملگرها و ثابتهای پیشفرض یکسانی برای پیادهسازی آنها پشتیبانی میشود.
در Aspose.Slides صفحهگسترده نمودار با Chart.getChartData.getChartDataWorkbook در ChartDataWorkbook نمایان میشود. فرمول صفحهگسترده میتواند با ChartDataCell.setFormula اختصاص و تغییر یابد. قابلیتهای زیر برای فرمولها در Aspose.Slides پشتیبانی میشود:
- ثوابت منطقی
- ثوابت عددی
- ثوابت رشتهای
- ثوابت خطا
- عملگرهای حسابی
- عملگرهای مقایسهای
- ارجاعهای سلولی سبک A1
- ارجاعهای سلولی سبک R1C1
- توابع پیشتعریفشده
به طور معمول، برگهکار مقادیر فرمول محاسبهشدهٔ آخرین را ذخیره میکند. اگر پس از بارگذاری ارائه، دادههای نمودار تغییر نیافته باشند، متد ChartDataCell.getValue این مقادیر را هنگام خواندن برمیگرداند. اما اگر دادههای برگهکار تغییر کرده باشد، هنگام خواندن ویژگی ChartDataCell.Value استثنای CellUnsupportedDataException برای فرمولهای نامپشتیبانیشده رخ میدهد. این به این دلیل است که وقتی فرمولها با موفقیت تجزیه میشوند، وابستگیهای سلول تعیین میشود و صحت مقادیر آخرین محاسبه مشخص میشود. اما اگر فرمول قابل تجزیه نباشد، صحت مقدار سلول تضمین نمیشود.
افزودن فرمول صفحهگسترده نمودار به ارائه
ابتدا، یک نمودار را به نخستین اسلاید یک ارائهٔ جدید اضافه کنید با ShapeCollection.getShapes.addChart. برگهکار نمودار بهطور خودکار ایجاد میشود و میتوانید با Chart.getChartData.getChartDataWorkbook به آن دسترسی پیدا کنید:
var pres = new aspose.slides.Presentation();
try {
var chart = pres.getSlides().get_Item(0).getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 150, 150, 500, 300);
var workbook = chart.getChartData().getChartDataWorkbook();
// ...
} finally {
if (pres != null) {
pres.dispose();
}
}
بیایید مقادیری در سلولها بنویسیم با ChartDataCell.setValue از نوع Object، که به این معنی است میتوانید هر مقداری را به این ویژگی اختصاص دهید:
workbook.getCell(0, "F2").setValue(-2.5);
workbook.getCell(0, "G3").setValue(6.3);
workbook.getCell(0, "H4").setValue(3);
حال برای نوشتن فرمول در سلول، میتوانید از ChartDataCell.setFormula استفاده کنید:
Note: ChartDataCell.setFormula برای تنظیم ارجاعهای سلولی سبک A1 بهکار میرود.
برای تنظیم ارجاع سلولی R1C1Formula، میتوانید از متد ChartDataCell.setR1C1Formula استفاده کنید:
سپس اگر مقادیر سلولهای B2 و C2 را بخوانید، محاسبه میشوند:
var value1 = cell1.getValue();// 7.8
var value2 = cell2.getValue();// 2.1
ثوابت منطقی
میتوانید در فرمولهای سلولی از ثوابت منطقی مانند FALSE و TRUE استفاده کنید:
workbook.getCell(0, "A2").setValue(false);
var cell = workbook.getCell(0, "B2");
cell.setFormula("A2 = TRUE");
var value = cell.getValue();// مقدار شامل بولی "false" است
ثوابت عددی
اعداد را میتوان به صورت دهدهی یا علمی برای ایجاد فرمول صفحهگسترده نمودار بهکار برد:
workbook.getCell(0, "A2").setFormula("1 + 0.5");
workbook.getCell(0, "B2").setFormula(".3 * 1E-2");
ثوابت رشتهای
ثابت رشتهای (یا حرفی) مقدار خاصی است که همانگونه استفاده میشود و تغییر نمیکند. ثوابت رشتهای ممکن است شامل تاریخها، متنها، اعداد و غیره باشند:
workbook.getCell(0, "A2").setFormula("\"abc\"");
workbook.getCell(0, "B2").setFormula("\"2/3/2020 12:00\"");
ثوابت خطا
گاهی محاسبهٔ نتیجه توسط فرمول ممکن نیست. در آن حالت، کد خطا بهجای مقدار در سلول نمایش داده میشود. هر نوع خطا کد خاص خود را دارد:
- #DIV/0! - فرمول سعی میکند بر صفر تقسیم کند.
- #GETTING_DATA - ممکن است در سلول نشان داده شود، در حالی که مقدار آن هنوز در حال محاسبه است.
- #N/A - اطلاعات موجود نیست یا در دسترس نیست. برخی دلایل میتوانند شامل: سلولهای استفادهشده در فرمول خالی هستند، وجود کاراکتر فضای اضافی، غلط املایی و غیره باشند.
- #NAME? - یک سلول یا شیء فرمول دیگری با نام خود پیدا نمیشود.
- #NULL! - ممکن است هنگام وجود اشتباه در فرمول ظاهر شود، مانند: (,) یا کاراکتر فضای خالی بهجای دو نقطه (:).
- #NUM! - عدد در فرمول ممکن است نامعتبر، بسیار بزرگ یا بسیار کوچک باشد.
- #REF! - ارجاع سلولی نامعتبر.
- #VALUE! - نوع مقدار غیرمنتظره. برای مثال، مقدار رشتهای به سلول عددی اختصاص داده شود.
var cell = workbook.getCell(0, "A2");
cell.setFormula("2 / 0");
var value = cell.getValue();// مقدار شامل رشته "#DIV/0!" است
عملگرهای حسابی
میتوانید تمام عملگرهای حسابی را در فرمولهای برگهکار نمودار بهکار ببرید:
| عملگر | معنی | مثال |
|---|---|---|
| + (علامت جمع) | جمع یا مثبت یکتایی | 2 + 3 |
| - (علامت منفی) | تفریق یا منفی یکتایی | 2 - 3 -3 |
| * (ستاره) | ضرب | 2 * 3 |
| / (علامت اسلش) | تقسیم | 2 / 3 |
| % (علامت درصد) | درصد | 30% |
| ^ (علامت ارتقا) | توان | 2 ^ 3 |
Note: برای تغییر ترتیب ارزیابی، بخش موردنظر فرمول را در داخل پرانتز بگذارید.
عملگرهای مقایسهای
میتوانید مقادیر سلولها را با عملگرهای مقایسهای مقایسه کنید. وقتی دو مقدار با استفاده از این عملگرها مقایسه شوند، نتیجه یک مقدار منطقی TRUE یا FALSE است:
| عملگر | معنی | معنی |
|---|---|---|
| = (علامت مساوی) | برابر با | A2 = 3 |
| <> (علامت نابرابری) | نابرابر با | A2 <> 3 |
| > (علامت بزرگتر) | بزرگتر از | A2 > 3 |
| >= (علامت بزرگتر یا مساوی) | بزرگتر یا مساوی با | A2 >= 3 |
| < (علامت کوچکتر) | کوچکتر از | A2 < 3 |
| <= (علامت کوچکتر یا مساوی) | کوچکتر یا مساوی با | A2 <= 3 |
ارجاعهای سلولی سبک A1
ارجاعهای سلولی سبک A1 برای برگهکارهایی بهکار میروند که ستون با یک حرف شناسایی میشود (مثلاً “A") و ردیف با یک عدد (مثلاً “1"). میتوانید از ارجاعهای سلولی سبک A1 بهصورت زیر استفاده کنید:
| قطعی | نسبی | مختلط | |
|---|---|---|---|
| سلول | $A$2 | A2 | A$2 $A2 |
| ردیف | $2:$2 | 2:2 | - |
| ستون | $A:$A | A:A | - |
| محدوده | $A$2:$C$4 | A2:C4 | $A$2:C4 A$2:$C4 |
در اینجا یک مثال از استفاده از ارجاع سلولی سبک A1 در فرمول آمده است:
workbook.getCell(0, "A2").setFormula("C3 + SUM(F2:H5)");
ارجاعهای سلولی سبک R1C1
ارجاعهای سلولی سبک R1C1 برای برگهکارهایی بهکار میروند که هم ردیف و هم ستون شناسدههای عددی دارند. میتوانید از ارجاعهای سلولی سبک R1C1 بهصورت زیر استفاده کنید:
| قطعی | نسبی | مختلط | |
|---|---|---|---|
| سلول | R2C3 | R[2]C[3] | R2C[3] R[2]C3 |
| ردیف | R2 | R[2] | - |
| ستون | C3 | C[3] | - |
| محدوده | R2C3:R5C7 | R[2]C[3]:R[5]C[7] | R2C3:R[5]C[7] R[2]C3:R5C[7] |
در اینجا یک مثال از استفاده از ارجاع سلولی سبک A1 در فرمول آمده است:
workbook.getCell(0, "A2").setR1C1Formula("R2C4 + SUM(R5C6:R7C9)");
توابع پیشتعریفشده
توابع پیشتعریفشدهای وجود دارند که میتوانند در فرمولها برای سادهسازی پیادهسازی بهکار روند. این توابع رایجترین عملیاتها را در بر میگیرند، مانند:
- ABS
- AVERAGE
- CEILING
- CHOOSE
- CONCAT
- CONCATENATE
- DATE (سیستم تاریخ 1900)
- DAYS
- FIND
- FINDB
- IF
- INDEX (فرم ارجاع)
- LOOKUP (فرم برداری)
- MATCH (فرم برداری)
- MAX
- SUM
- VLOOKUP
سوالات متداول
آیا فایلهای Excel خارجی بهعنوان منبع داده برای یک نمودار با فرمولها پشتیبانی میشوند؟
بله. Aspose.Slides فایلهای کارکتب خارجی را بهعنوان منبع داده نمودار پشتیبانی میکند، که به شما امکان استفاده از فرمولها از یک فایل XLSX خارج از ارائه را میدهد.
آیا فرمولهای نمودار میتوانند به برگهها داخل همان کارکتب با نام برگه ارجاع دهند؟
بله. فرمولها از مدل ارجاع استاندارد اکسل پیروی میکنند، بنابراین میتوانید به برگههای دیگر داخل همان کارکتب یا یک کارکتب خارجی ارجاع دهید. برای ارجاعهای خارجی، مسیر و نام کارکتب را با استفاده از سینتکس اکسل گنجانید.