Rückgabe eines Wertebereichs mit AbstractCalculationEngine in C++
Aspose.Cells bietet die Klasse AbstractCalculationEngine, die verwendet wird, um benutzerdefinierte Funktionen zu implementieren, die nicht von Microsoft Excel als integrierte Funktionen unterstützt werden.
In diesem Artikel wird erläutert, wie der Wertebereich von AbstractCalculationEngine zurückgegeben wird.
Der folgende Code zeigt die Verwendung der Klasse AbstractCalculationEngine und gibt den Wertebereich über ihre Methode zurück.
Erstellen Sie eine Klasse mit einer Funktion CalculateCustomFunction
. Diese Klasse implementiert AbstractCalculationEngine.
#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);
}
};
Jetzt verwenden Sie die oben genannte Funktion in Ihrem Programm.
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();
}