Formüller Hesaplama Yolları

Giriş

Aspose.Cells, gömülü bir formül hesaplama motoruna sahiptir. Sadece tasarımcı şablonlarından alınan formülleri yeniden hesaplamakla kalmaz, aynı zamanda çalışma zamanında eklenen formüllerin sonuçlarını hesaplama konusunda da destek sağlar.

Formüller Ekleyin ve Sonuçlarını Hesaplayın

Aspose.Cells, Microsoft Excel’in bir parçası olan çoğu formül veya işlevi destekler. Bunlar API aracılığıyla veya tasarımcı elektronik tabloları kullanarak kullanılabilir. Aspose.Cells, matematiksel, dize, mantıksal, tarih/saat, istatistiksel, arama ve başvuru formüllerinin geniş bir kümesini destekler.

Bir hücreye formül eklemek için Cell.SetFormula yöntemini kullanın. Bir hücreye formül uygularken, formülü her zaman bir eşitlik işareti (=) ile başlatın, Microsoft Excel’de formül oluştururken yaptığınız gibi. Bir virgül (,) kullanarak işlev parametrelerini ayırın.

Formüllerin sonuçlarını hesaplamak için Workbook.CalculateFormula() yöntemini çağırın, bu yöntem bir Excel dosyasına gömülü tüm formülleri işler. Lütfen bu kod ile oluşturulan çıktı excel dosyasını kontrol edin.

Örnek Kod

Aspose::Cells::Startup();
//For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C
//Output directory path
U16String outPath(u"..\\Data\\Output\\");
//Path of output excel file
U16String outputAddingFormulasAndCalculatingResults = outPath + u"outputAddingFormulasAndCalculatingResults.xlsx";
//Create workbook
Workbook wb;
//Access first worksheet in the workbook
Worksheet ws = wb.GetWorksheets().Get(0);
//Adding integer values to cells A1, A2 and A3
ws.GetCells().Get(u"A1").PutValue(10);
ws.GetCells().Get(u"A2").PutValue(20);
ws.GetCells().Get(u"A3").PutValue(70);
//Adding a SUM formula to "A4" cell
ws.GetCells().Get(u"A4").SetFormula(u"=SUM(A1:A3)");
//Calculating the results of formulas
wb.CalculateFormula();
//Get the calculated value of the cell
U16String strVal = ws.GetCells().Get(u"A4").GetStringValue();
//Print the calculated value on console
std::cout << "Calculated Result: " << strVal.ToUtf8() <<std::endl;
//Saving the workbook
wb.Save(outputAddingFormulasAndCalculatingResults);
Aspose::Cells::Cleanup();

Formülleri Yalnızca Bir Kez Hesaplayın

Workbook.CalculateFormula() çağrıldığında, Aspose.Cells, bir hesaplama zinciri oluşturur. Bu, formüller ikinci veya üçüncü kez hesaplandığında performansı artırır.

Ancak, eğer şablon çok sayıda formül içeriyorsa, formülün ilk kez hesaplanması, çok miktarda CPU işlem zamanı ve bellek tüketebilir.

Aspose.Cells, formüllerin yalnızca bir kez hesaplanmak istendiğinde yararlı olan bir hesaplama zinciri oluşturmayı kapatmanıza olanak tanır.

Lütfen Workbook.GetISettings().SetCreateCalcChain() yöntemini false parametre ile çağırın. Bu kodu test etmek için sunulan excel dosyasını kullanabilirsiniz.

Örnek Kod

Aspose::Cells::Startup();
//For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C
//Source directory path
U16String dirPath(u"..\\Data\\Formulas\\");
//Path of input excel file
U16String sampleCalculatingFormulasOnceOnly = dirPath + u"sampleCalculatingFormulasOnceOnly.xlsx";
//Create workbook
Workbook wb(sampleCalculatingFormulasOnceOnly);
//Set the CreateCalcChain as false
wb.GetSettings().GetFormulaSettings().SetEnableCalculationChain(false);
//Get the time before formula calculationint
auto startTime = std::chrono::system_clock::now();
//Calculate the workbook formulas
wb.CalculateFormula();
//Get the time after formula calculation
auto interval = std::chrono::system_clock::now() - startTime;
long long time = std::chrono::duration_cast<std::chrono::milliseconds>(interval).count();
std::cout << "Workbook Formula Calculation Elapsed Time in Milliseconds: " << time << std::endl;
Aspose::Cells::Cleanup();