AbstractCalculationEngine kullanarak Bir Aralık Değeri Döndürme C++ ile
Contents
[
Hide
]
Aspose.Cells, Microsoft Excel tarafından desteklenmeyen kullanıcı tanımlı veya özel işlevleri uygulamak için kullanılan AbstractCalculationEngine sınıfını sağlar.
Bu makale, AbstractCalculationEngine aralığındaki değerlerin nasıl döndürüleceğini açıklayacaktır.
Aşağıdaki kod, AbstractCalculationEngine sınıfının kullanımını gösterir ve yöntemi aracılığıyla değer aralığını döndürür.
CalculateCustomFunction
işlevine sahip bir sınıf oluşturun. Bu sınıf AbstractCalculationEngine uygulamasını gerçekleştirir.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
class CustomFunctionStaticValue : public AbstractCalculationEngine
{
public:
void Calculate(CalculationData& data) override
{
Vector<Object> row1{Object(Date{2015, 6, 12, 10, 6, 30}) ,Object(2)};
Vector<Object> row2{ Object(3.0) ,Object(U16String(u"Test")) };
Vector<Vector<Object>> values{ row1 , row2 };
// Create Object with the 2D Vector and set as calculated value
Object calculatedValue(values);
// Set the calculated value in the CalculationData object
data.SetCalculatedValue(calculatedValue);
}
};
Şimdi yukarıdaki fonksiyonu programınızda kullanın.
int main()
{
Aspose::Cells::Startup();
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
Workbook workbook;
Cells cells = workbook.GetWorksheets().Get(0).GetCells();
Cell cell = cells.Get(0, 0);
cell.SetArrayFormula(u"=MYFUNC()", 2, 2);
Style style = cell.GetStyle();
style.SetNumber(14);
cell.SetStyle(style);
CalculationOptions calculationOptions;
// Create and set custom engine with proper memory management
std::shared_ptr<CustomFunctionStaticValue> customEngine =
std::make_shared<CustomFunctionStaticValue>();
calculationOptions.SetCustomEngine(customEngine.get());
workbook.CalculateFormula(calculationOptions);
workbook.GetSettings().GetFormulaSettings().SetCalculationMode(CalcModeType::Manual);
workbook.Save(outDir + u"output_out.xlsx");
workbook.Save(outDir + u"output_out.pdf");
std::cout << "Workbook saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
}