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(); |