حساب الصيغ
إضافة صيغ وحساب النتائج
تحتوي Aspose.Cells على محرك حساب مدمج للصيغ. ليس فقط يمكنه إعادة حساب الصيغ المستوردة من قوالب المصمم بل يدعم أيضًا حساب نتائج الصيغ المضافة في وقت التشغيل.
تدعم Aspose.Cells معظم الصيغ أو الوظائف التي تشكل جزءًا من Microsoft Excel (اقرأ قائمة الوظائف المدعومة من قبل محرك الحساب). يمكن استخدام هذه الوظائف من خلال واجهات برمجة التطبيقات أو جداول البيانات المصممة. تدعم Aspose.Cells مجموعة ضخمة من الصيغ الرياضية والسلسلة والبوليان والتاريخ / الوقت والاحصائية وقواعد البيانات والبحث والصيغ المرجعية.
استخدم خصائص Formula أو طرق SetFormula(…) لفئة Cell لإضافة صيغة لخلية. عند تطبيق الصيغة، ابدأ دائمًا السلسلة برمز يساوي (=) كما تفعل عند إنشاء صيغة في Microsoft Excel واستخدم فاصلة (،) لفصل معلمات الدالة.
لحساب نتائج الصيغ، يمكن للمستخدم استدعاء الطريقة CalculateFormula لفئة Workbook التي تقوم بمعالجة جميع الصيغ المضمنة في ملف Excel. أو، يمكن للمستخدم استدعاء الطريقة CalculateFormula لفئة Worsheet التي تقوم بمعالجة جميع الصيغ المضمنة في ورقة. أو، يمكن أيضًا للمستخدم استدعاء الطريقة Calculate لفئة Cell التي تقوم بمعالجة صيغة خلية واحدة:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(CalculatingFormulas.class) + "formulas/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(); | |
// Adding a new worksheet to the Excel object | |
int sheetIndex = workbook.getWorksheets().add(); | |
// Obtaining the reference of the newly added worksheet by passing its sheet index | |
Worksheet worksheet = workbook.getWorksheets().get(sheetIndex); | |
// Adding a value to "A1" cell | |
worksheet.getCells().get("A1").putValue(1); | |
// Adding a value to "A2" cell | |
worksheet.getCells().get("A2").putValue(2); | |
// Adding a value to "A3" cell | |
worksheet.getCells().get("A3").putValue(3); | |
// Adding a SUM formula to "A4" cell | |
worksheet.getCells().get("A4").setFormula("=SUM(A1:A3)"); | |
// Calculating the results of formulas | |
workbook.calculateFormula(); | |
// Get the calculated value of the cell | |
String value = worksheet.getCells().get("A4").getStringValue(); | |
// Saving the Excel file | |
workbook.save(dataDir + "CalculatingFormulas_out.xls"); |
مهم معرفته
حساب مباشر للصيغ
Aspose.Cells لديه محرك حساب مضمن للصيغ. بالإضافة إلى حساب الصيغ المستوردة من ملف مصمم، يمكن لـ Aspose.Cells حساب نتائج الصيغ مباشرة.
في بعض الأحيان، قد تحتاج إلى حساب نتائج الصيغ مباشرة دون إضافتها إلى ورقة عمل. قد تكون قيم الخلايا المستخدمة في الصيغة موجودة بالفعل في ورقة عمل وكل ما تحتاجه هو إيجاد نتيجة تلك القيم بناءً على بعض صيغ Microsoft Excel دون إضافة الصيغة في ورقة عمل.
يمكنك استخدام واجهات برمجة التطبيقات لمحرك حساب الصيغ في Aspose.Cells لـ Worksheet لـ calculate نتائج مثل هذه الصيغ دون إضافتها إلى ورقة العمل:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(DirectCalculationFormula.class) + "formulas/"; | |
// Create a workbook | |
Workbook workbook = new Workbook(); | |
// Access first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Put 20 in cell A1 | |
Cell cellA1 = worksheet.getCells().get("A1"); | |
cellA1.putValue(20); | |
// Put 30 in cell A2 | |
Cell cellA2 = worksheet.getCells().get("A2"); | |
cellA2.putValue(30); | |
// Calculate the Sum of A1 and A2 | |
Object results = worksheet.calculateFormula("=Sum(A1:A2)"); | |
// Print the output | |
System.out.println("Value of A1: " + cellA1.getStringValue()); | |
System.out.println("Value of A2: " + cellA2.getStringValue()); | |
System.out.println("Result of Sum(A1:A2): " + results.toString()); |
ينتج الكود أعلاه الناتج التالي:
Value of A1: 20
Value of A2: 30
Result of Sum(A1:A2): 50.0
حساب الصيغ مرارًا
عند وجود العديد من الصيغ في دفتر العمل ويحتاج المستخدم إلى حسابها مرارًا مع تعديل جزء صغير فقط منها، يمكن أن يكون من المفيد لأداء الأداء تمكين سلسلة حساب الصيغ: FormulaSettings.EnableCalculationChain.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(CalculatingFormulasOnce.class) + "formulas/"; | |
// Load the template workbook | |
Workbook workbook = new Workbook(dataDir + "book1.xls"); | |
// Print the time before formula calculation | |
System.out.println(DateTime.getNow()); | |
// Set the CreateCalcChain as true | |
workbook.getSettings().getFormulaSettings().setEnableCalculationChain(true); | |
// Calculate the workbook formulas | |
workbook.calculateFormula(); | |
Cells cells = workbook.getWorksheets().get("Sheet1").getCells(); | |
//with original values, the calculated result | |
System.out.println(cells.get("A11").getValue()); | |
//update one value the formula depends on | |
cells.get("A5").putValue(15); | |
// Calculate the workbook formulas again, in fact only A11 needs to be and will be calculated | |
workbook.calculateFormula(); | |
//check the re-calculated value | |
System.out.println(cells.get("A11").getValue()); | |
// Print the time after formula calculation | |
System.out.println(DateTime.getNow()); |
مهم معرفته
مواضيع متقدمة
- إضافة الخلايا إلى نافذة مراقبة صيغ Microsoft Excel
- محرك حساب الصيغ في Aspose.Cells
- حساب وظيفة IFNA باستخدام Aspose.Cells
- حساب الصيغة الصفية للجداول البيانات
- حساب وظائف MINIFS و MAXIFS في Excel 2016
- تقليل وقت الحساب لطريقة Cell.Calculate
- اكتشاف المراجعة الدائرية
- الحساب المباشر للوظيفة المخصصة دون كتابتها في ورقة العمل
- تنفيذ محرك الحساب المخصص لتوسيع محرك الحساب الافتراضي لـ Aspose.Cells
- إيقاف أو إلغاء حساب الصيغ في سجل العمل
- إرجاع مجموعة من القيم باستخدام AbstractCalculationEngine
- إرجاع مجموعة من القيم باستخدام ICustomFunction
- استخدام ميزة ICustomFunction