Returning a Range of Values using AbstractCalculationEngine with Node.js via C++

Contents
[ ]

The following code demonstrates the use of the AbstractCalculationEngine class and returns the range of values via its method.

Create a class with a function calculateCustomFunction. This class implements AbstractCalculationEngine.

const AsposeCells = require("aspose.cells.node");

class CustomFunctionStaticValue extends AsposeCells.AbstractCalculationEngine {
    calculate(data) {
        data.setCalculatedValue([
            [new Date(2015, 5, 12, 10, 6, 30), 2],
            [3.0, "Test"]
        ]);
    }
}

Now use the above function in your program

const AsposeCells = require("aspose.cells.node");

class CustomFunctionStaticValue extends AsposeCells.AbstractCalculationEngine {
    calculate(data) {
        data.setCalculatedValue([
            [new Date(2015, 5, 12, 10, 6, 30), 2],
            [3.0, "Test"]
        ]);
    }
}

try {
    const path = require("path");
    const AsposeCells = require("aspose.cells.node");

    // The path to the documents directory.
    const dataDir = path.join(__dirname, "data");

    // Create workbook
    const workbook = new AsposeCells.Workbook();
    const cells = workbook.getWorksheets().get(0).getCells();

    // Set formula
    const cell = cells.get(0, 0);
    cell.setArrayFormula("=MYFUNC()", 2, 2);

    const style = cell.getStyle();
    style.setNumber(14);
    cell.setStyle(style);

    // Set calculation options for formula
    const calculationOptions = new AsposeCells.CalculationOptions();
    calculationOptions.setCustomEngine(new CustomFunctionStaticValue());
    workbook.calculateFormula(calculationOptions);

    // Save to XLSX by setting the calculation mode to manual
    workbook.getSettings().getFormulaSettings().setCalculationMode(AsposeCells.CalcModeType.Manual);
    workbook.save(dataDir + "output_out.xlsx");

    // Save to PDF
    workbook.save(dataDir + "output_out.pdf");
} catch (error) {
    console.error(`Test failed: ${error.message}`);
    throw error;
}