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

صفحهٔ گستردهٔ نمودار شامل نام عناصر نمودار (نام دسته: Category1، نام سری) و جدولی با دادههای عددی مربوط به این دستهها و سریها است. بهطور پیشفرض، وقتی یک نمودار جدید ایجاد میکنید—دادههای صفحهٔ گستردهٔ نمودار با دادههای پیشفرض تنظیم میشوند. سپس میتوانید دادههای صفحهٔ گستردهٔ کاربرگ را بهصورت دستی تغییر دهید.
معمولاً نمودار دادههای پیچیدهای (مثلاً تحلیلگران مالی، تحلیلگران علمی) را نشان میدهد که سلولهای آنها از مقادیر سلولهای دیگر یا دادههای پویا محاسبه میشوند. محاسبهٔ مقدار سلول بهصورت دستی و کدنویسی ثابت آن در سلول، تغییر آن در آینده را دشوار میسازد. اگر مقدار یک سلول خاص را تغییر دهید، تمام سلولهای وابسته نیز باید بهروزرسانی شوند. علاوه بر این، دادههای جدول ممکن است به دادههای جداول دیگر وابسته باشند که یک طرح دادهٔ ارائهٔ پیچیده را ایجاد میکند که نیاز به بهروزرسانی آسان و انعطافپذیر دارد.
فرمول صفحهٔ گستردهٔ نمودار در ارائه یک عبارت برای محاسبه و بهروزرسانی خودکار دادههای صفحهٔ گستردهٔ نمودار است. فرمول صفحهٔ گستردهٔ دادههای محاسبهٔ منطق برای یک سلول یا مجموعهای از سلولها را تعریف میکند. فرمول صفحهٔ گسترده میتواند یک فرمول ریاضی یا منطقی باشد که از: ارجاعهای سلولی، توابع ریاضی، عملگرهای منطقی، عملگرهای حسابی، توابع تبدیل، ثابتهای رشتهای و غیره استفاده میکند. تعریف فرمول در یک سلول نوشته میشود و این سلول شامل مقدار سادهای نیست. فرمول صفحهٔ گسترده مقدار را محاسبه و باز میگرداند؛ سپس این مقدار به سلول اختصاص داده میشود. فرمولهای صفحهٔ گستردهٔ نمودار در ارائهها در واقع همان فرمولهای اکسل هستند و توابع، عملگرها و ثابتهای پیشفرض یکسانی برای پیادهسازی آنها پشتیبانی میشود.
در Aspose.Slides صفحهٔ گستردهٔ نمودار با روش ChartData::getChartDataWorkbook از نوع ChartDataWorkbook نمایش داده میشود. فرمول صفحهٔ گسترده میتواند با ChartDataCell::setFormula اختصاص و تغییر یابد. کارکردهای زیر برای فرمولها در Aspose.Slides پشتیبانی میشوند:
- ثابتهای منطقی
- ثابتهای عددی
- ثابتهای رشتهای
- ثابتهای خطا
- عملگرهای حسابی
- عملگرهای مقایسهای
- ارجاعهای سلولی سبک A1
- ارجاعهای سلولی سبک R1C1
- توابع پیشتعریف شده
بهطور معمول، صفحههای گسترده آخرین مقادیر محاسبهشدهٔ فرمولها را ذخیره میکنند. اگر پس از بارگذاری ارائه، دادههای نمودار تغییر نکرده باشند—ChartDataCell::getValue مقدارهای آنها را هنگام خواندن برمیگرداند. اما اگر دادههای صفحهٔ گسترده تغییر کرده باشد، هنگام خواندن مقدار، استثنای CellUnsupportedDataException برای فرمولهای پشتیبانینشده رخ میدهد. این به این دلیل است که وقتی فرمولها با موفقیت تجزیه میشوند، وابستگیهای سلولی تعیین میشود و صحت مقادیر آخرین محاسبه بررسی میشود. اما اگر فرمول قابل تجزیه نباشد، صحت مقدار سلول تضمین نمیشود.
افزودن فرمول صفحهٔ گستردهٔ نمودار به یک ارائه
ابتدا با استفاده از ShapeCollection::addChart یک نمودار به اولین اسلاید یک ارائهٔ جدید اضافه کنید. کاربرگ نمودار بهصورت خودکار ساخته میشود و میتوانید با ChartData::getChartDataWorkbook به آن دسترسی پیدا کنید:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 150, 150, 500, 300);
$workbook = $chart->getChartData()->getChartDataWorkbook();
# ...
} finally {
if (!java_is_null($pres)) {
$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 استفاده میشود.
برای تنظیم فرمول به سبک R1C1 میتوانید از ChartDataCell::setR1C1Formula استفاده کنید.
سپس اگر سعی کنید مقادیر سلولهای B2 و C2 را بخوانید، محاسبه میشوند:
$value1 = $cell1->getValue();// 7.8
$value2 = $cell2->getValue();// 2.1
ثابتهای منطقی
میتوانید از ثابتهای منطقی مانند FALSE و TRUE در فرمولهای سلول استفاده کنید:
$workbook->getCell(0, "A2")->setValue(false);
$cell = $workbook->getCell(0, "B2");
$cell->setFormula("A2 = TRUE");
$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! - نوع مقدار غیرمنتظره. به عنوان مثال، مقدار رشتهای به سلول عددی اختصاص داده شود.
$cell = $workbook->getCell(0, "A2");
$cell->setFormula("2 / 0");
$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
سوالات متداول
آیا فایلهای اکسل خارجی بهعنوان منبع داده برای نمودار با فرمولها پشتیبانی میشوند؟
بله. Aspose.Slides از کتابکارهای خارجی بهعنوان منبع دادهٔ نمودار پشتیبانی میکند که به شما امکان استفاده از فرمولها از یک فایل XLSX خارج از ارائه را میدهد.
آیا فرمولهای نمودار میتوانند به شیتهای داخل همان کتابکار بر اساس نام شیت ارجاع دهند؟
بله. فرمولها از مدل مرجع استاندارد اکسل پیروی میکنند، بنابراین میتوانید به شیتهای دیگر داخل همان کتابکار یا کتابکار خارجی ارجاع دهید. برای ارجاعهای خارجی، مسیر و نام کتابکار را با استفاده از نحو اکسل درج کنید.