Returning a Range of Values using AbstractCalculationEngine with Node.js via C++
Contents
[
Hide
]
Aspose.Cells provides AbstractCalculationEngine class which is used to implement user-defined or custom functions that are not supported by Microsoft Excel as built-in functions.
This article will explain how to return the range of values from AbstractCalculationEngine.
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 calc 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;
}