Formula
FormulaPlugin
Section titled “FormulaPlugin”The FormulaPlugin
is a RevoGrid plugin that enables spreadsheet-like formula calculations
within grid cells. Leveraging the “formulajs” library, this plugin allows users to input and
compute formulas similar to those in Excel, such as “=SUM(A1:B2)”.
Key Features:
- Formula Evaluation: Listens to the
beforecellrender
event to identify and calculate cell values that are formulas. The computed result replaces the formula as the cell’s display value. - Recursive Formula Support: Handles nested formulas by evaluating inner formulas first, ensuring accurate calculations even when formulas reference other formulas.
- Error Handling: Detects and prevents recursive loops in formulas, returning a
FORMULA_ERROR
when recursion is detected to avoid infinite loops. - Data Integration: Utilizes grid data sources and column information to accurately resolve cell references within formulas.
Usage:
- Integrate
FormulaPlugin
in the RevoGrid to enable formula parsing and computation. This is done by adding the plugin to the grid’s plugin list, allowing it to automatically handle formula cells during rendering.
Example
Section titled “Example”import { FormulaPlugin } from '@revolist/revogrid-pro';
const grid = document.createElement('revo-grid');grid.plugins = [FormulaPlugin];
This plugin is essential for users who require dynamic data computations directly within their data grid, providing a powerful tool for real-time data analysis and presentation.
class FormulaPlugin {}
evaluate
Section titled “evaluate”export function evaluate( formulaValue: string, getCellValueByAddress: (col: number, row: number) => any);
evaluateRawValuesFormula
Section titled “evaluateRawValuesFormula”Evaluates a formula before exporting to Excel, returning its computed value.
export function evaluateRawValuesFormula(formula: string, allSources: DataType[], columns: ColumnRegular[]);
FORMULA_PREFIX
Section titled “FORMULA_PREFIX”FORMULA_PREFIX: string;
FORMULA_ERROR
Section titled “FORMULA_ERROR”FORMULA_ERROR: string;
parseFormula
Section titled “parseFormula”parseFormula: (formula: string, getCellValueByAddress: (col: number, row: number) => any) => string;
isFormula
Section titled “isFormula”isFormula: (value?: any) => any;