حساب الصيغ

إضافة صيغ وحساب النتائج

تحتوي 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());

مهم معرفته

مواضيع متقدمة