Advanced Formula Engine

GitHubEdit on GitHub
Univer Pro

This is the Univer Pro advanced formula engine docs. For the open-source version, see here.

The Advanced Formula Engine optimizes the original formula engine, providing improved calculation performance and richer functionality. It supports a variety of complex formula calculations, can handle large datasets, and offers better error handling and debugging capabilities.

Performance Comparison

The following table compares the Pro formula engine against the OSS formula engine.

Test FileFormula CountOSSProPro Speedup
Synthetic_500K_MixedFormulas500,000137.13 s132.18 s1.04×
RealWorld_Engineering_68K68,57634.54 s6.65 s5.19×
RealWorld_Financial_33K33,6171.34 s1.22 s1.10×
Template_1.4M_Summary1,463,721248.62 s103.62 s2.40×

Preset Mode

The Advanced Formula Engine is included in the @univerjs/preset-sheets-advanced preset.

Installation

The UniverSheetsAdvancedPreset preset from @univerjs/preset-sheets-advanced depends on the UniverSheetsDrawingPreset preset at runtime. Please install @univerjs/preset-sheets-drawing first.

npm install @univerjs/preset-sheets-drawing @univerjs/preset-sheets-advanced

Usage

import { UniverSheetsAdvancedPreset } from '@univerjs/preset-sheets-advanced'
import UniverPresetSheetsAdvancedEnUS from '@univerjs/preset-sheets-advanced/locales/en-US'
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { UniverSheetsDrawingPreset } from '@univerjs/preset-sheets-drawing'
import UniverPresetSheetsDrawingEnUS from '@univerjs/preset-sheets-drawing/locales/en-US'
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

import '@univerjs/preset-sheets-core/lib/index.css'
import '@univerjs/preset-sheets-drawing/lib/index.css'
import '@univerjs/preset-sheets-advanced/lib/index.css'

const { univerAPI } = createUniver({
  locale: LocaleType.En_US,
  locales: {
    [LocaleType.En_US]: mergeLocales(
      UniverPresetSheetsCoreEnUS,
      UniverPresetSheetsDrawingEnUS, 
      UniverPresetSheetsAdvancedEnUS, 
    ),
  },
  presets: [
    UniverSheetsCorePreset(),
    UniverSheetsDrawingPreset(), 
    UniverSheetsAdvancedPreset(), 
  ],
})

If you have a commercial license for Univer, please refer to Using License in Client for configuration.

Plugin Mode

Installation

npm install @univerjs-pro/engine-formula

Usage

By using the Advanced Formula Engine, you need to replace the original UniverFormulaEnginePlugin with UniverProFormulaEnginePlugin.

import { UniverProFormulaEnginePlugin } from '@univerjs-pro/engine-formula'
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'

univer.registerPlugin(UniverFormulaEnginePlugin) 
univer.registerPlugin(UniverProFormulaEnginePlugin) 

If you have a commercial license for Univer, please refer to Using License in Client for configuration.

How is this guide?