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

صفحهگسترده نمودار شامل نام عناصر نمودار (نام دسته: Category1، نام سری) و جدولی با دادههای عددی مربوط به این دستهها و سریها است. بهصورت پیشفرض، هنگام ایجاد یک نمودار جدید، دادههای صفحهگسترده با دادههای پیشفرض تنظیم میشوند. سپس میتوانید دادههای صفحهگسترده را بهصورت دستی در کاربرگ تغییر دهید.
عموماً، نمودار دادههای پیچیدهای (مثلاً تحلیلهای مالی، تحلیلهای علمی) را نشان میدهد که سلولهای آن از مقادیر سلولهای دیگر یا دادههای پویا محاسبه میشوند. محاسبه دستی مقدار سلول و کدگذاری ثابت آن در سلول، تغییر آن را در آینده دشوار میکند. اگر مقدار یک سلول خاص را تغییر دهید، تمام سلولهای وابسته به آن نیز باید بهروز شوند. علاوه بر این، دادههای جدول ممکن است به دادههای جداول دیگر وابسته باشند و یک طرح دادهای ارائهٔ پیچیده ایجاد کنند که نیاز به بهروزرسانی آسان و انعطافپذیر دارد.
فرمول صفحهگستردهٔ نمودار در ارائه، یک عبارت برای محاسبه و بهروزرسانی خودکار دادههای صفحهگستردهٔ نمودار است. فرمول صفحهگسترده منطق محاسبه دادهها را برای یک سلول یا مجموعهای از سلولها تعریف میکند. این فرمول میتواند ریاضی یا منطقی باشد و از ارجاعات سلولی، توابع ریاضی، عملگرهای منطقی، عملگرهای حسابی، توابع تبدیل، ثابتهای رشتهای و غیره استفاده کند. تعریف فرمول در یک سلول نوشته میشود و این سلول مقدار سادهای ندارد. فرمول صفحهگسترده مقدار را محاسبه و بازمیگرداند؛ سپس این مقدار به سلول اختصاص داده میشود. فرمولهای صفحهگسترده در ارائهها در واقع همان فرمولهای اکسل هستند و توابع، عملگرها و ثابتهای پیشفرض یکسانی برای پیادهسازی آنها پشتیبانی میشود.
در Aspose.Slides صفحهگستردهٔ نمودار با متد Chart.getChartData.getChartDataWorkbook از نوع IChartDataWorkbook نمایش داده میشود. فرمول صفحهگسترده میتواند با IChartDataCell.setFormula اختصاص و تغییر یابد. قابلیتهای زیر برای فرمولها در Aspose.Slides پشتیبانی میشود:
- ثابتهای منطقی
- ثابتهای عددی
- ثابتهای رشتهای
- ثابتهای خطا
- عملگرهای حسابی
- عملگرهای مقایسهای
- ارجاعات سلولی به سبک A1
- ارجاعات سلولی به سبک R1C1
- توابع پیشتعریفشده
بهطور معمول، صفحهگستردهها آخرین مقادیر محاسبهشدهٔ فرمولها را ذخیره میکنند. اگر پس از بارگذاری ارائه، دادههای نمودار تغییر نکرده باشند، متد IChartDataCell.getValue آن مقادیر را هنگام خواندن بازمیگرداند. اما اگر دادههای صفحهگسترده تغییر کرده باشد، هنگام خواندن ویژگی ChartDataCell.Value استثنای CellUnsupportedDataException برای فرمولهای پشتیبانینشده پرتاب میشود. این به این دلیل است که وقتی فرمولها با موفقیت تجزیه میشوند، وابستگیهای سلول تعیین میشود و صحت مقادیر آخرین محاسبه ارزیابی میشود. اما اگر فرمول قابل تجزیه نباشد، صحت مقدار سلول تضمین نمیشود.
افزودن یک فرمول صفحهگستردهٔ نمودار به یک ارائه
ابتدا، یک نمودار به اسلاید اول یک ارائهٔ جدید اضافه کنید با IShapeCollection.getShapes.addChart. کاربرگ نمودار بهصورت خودکار ایجاد میشود و میتوان به آن دسترسی پیدا کرد با Chart.getChartData.getChartDataWorkbook متد:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 150, 150, 500, 300);
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
// ...
} finally {
if (pres != null) pres.dispose();
}
بیایید برخی مقادیر را در سلولها بنویسیم با ویژگی IChartDataCell.setValue از نوع Object، که به این معنی است میتوانید هر مقادیری را به این ویژگی اختصاص دهید:
workbook.getCell(0, "F2").setValue(-2.5);
workbook.getCell(0, "G3").setValue(6.3);
workbook.getCell(0, "H4").setValue(3);
حالا برای نوشتن فرمول در سلول، میتوانید از متد IChartDataCell.setFormula استفاده کنید:
توجه: متد IChartDataCell.setFormula برای تنظیم ارجاعات سلولی به سبک A1 استفاده میشود.
برای تنظیم ارجاع سلولی R1C1Formula میتوانید از متد IChartDataCell.setR1C1Formula استفاده کنید:
سپس اگر سعی کنید مقادیر سلولهای B2 و C2 را بخوانید، محاسبه میشوند:
Object value1 = cell1.getValue(); // 7.8
Object value2 = cell2.getValue(); // 2.1
ثابتهای منطقی
میتوانید از ثابتهای منطقی مانند FALSE و TRUE در فرمولهای سلول استفاده کنید:
workbook.getCell(0, "A2").setValue(false);
IChartDataCell cell = workbook.getCell(0, "B2");
cell.setFormula("A2 = TRUE");
Object 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! – نوع مقدار غیرمنتظره. برای مثال، مقدار رشتهای در سلول عددی تنظیم شده است.
IChartDataCell cell = workbook.getCell(0, "A2");
cell.setFormula("2 / 0");
Object value = cell.getValue(); // مقدار شامل رشته "#DIV/0!" است
عملگرهای حسابی
میتوانید همهٔ عملگرهای حسابی را در فرمولهای کاربرگ نمودار استفاده کنید:
| عملگر | معنا | مثال |
|---|---|---|
| + (علامت مثبت) | جمع یا مثبت یکدلی | 2 + 3 |
| - (علامت منفی) | تفریق یا منفی یکدلی | 2 - 3 -3 |
| * (ستاره) | ضرب | 2 * 3 |
| / (خط مورب) | تقسیم | 2 / 3 |
| % (علامت درصد) | درصد | 30% |
| ^ (caret) | توان | 2 ^ 3 |
توجه: برای تغییر ترتیب ارزیابی، بخش موردنظر فرمول را در پرانتز بگذارید.
عملگرهای مقایسهای
میتوانید مقادیر سلولها را با عملگرهای مقایسهای مقایسه کنید. وقتی دو مقدار با این عملگرها مقایسه میشوند، نتیجه مقدار منطقی 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] |
در ادامه مثال استفاده از ارجاع سلولی به سبک R1C1 در فرمول آورده شده است:
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 خارج از ارائه را میدهد.
آیا فرمولهای نمودار میتوانند به شیتهای داخل همان کتابکار با نام شیت ارجاع دهند؟
بله. فرمولها از مدل ارجاع استاندارد اکسل پیروی میکنند، بنابراین میتوانید به شیتهای دیگر داخل همان کتابکار یا یک کتابکار خارجی ارجاع دهید. برای ارجاعات خارجی، مسیر و نام کتابکار را با استفاده از سینتکس اکسل بگنجانید.