Optimizing SJS open/save performance

Posted by: peter on 30 October 2025, 12:52 pm EST

  • Posted 30 October 2025, 12:52 pm EST

    We noticed that SpreadJS open/save has many options. Can you help us optimize the open/save speed. We want to keep formulas/styles, but don’t need to recompute the cell values (cells with formulas).

  • Posted 31 October 2025, 1:50 am EST - Updated 31 October 2025, 2:10 am EST

    Hi Peter,

    Based on your requirements, the key to optimizing performance is to disable formula recalculation during the open operation. SpreadJS provides specific options in the OpenOptions and SaveOptions that control this behavior.

    Recommended Configuration:

    When opening your files, please use the following settings:

    spread.open(fileData, null, {
        includeStyles: true,           // Keep all styles
        includeFormulas: true,         // Keep all formulas
        fullRecalc: false,             // Don't recalculate on load
        dynamicReferences: false,      // Skip dynamic reference calculations
        calcOnDemand: false,           // Disable on-demand calculation
        incrementalCalculation: false, // Disable incremental calculation
        includeUnusedStyles: false,    // Exclude unused styles for better performance
        openMode: GC.Spread.Sheets.OpenMode.normal
    });

    When saving your files, please use the following settings:

    spread.save(function(blob) {}, function(error) {}, {
        includeStyles: true,           // Include all styles
        includeFormulas: true,         // Include all formulas
        includeBindingSource: false,   // Exclude binding source for better performance
        includeAutoMergedCells: false, // Exclude auto-merged cells if not needed
        includeCalcModelCache: false,  // Exclude calculation cache
        includeUnusedNames: false,     // Exclude unused custom names
        includeEmptyRegionCells: false,// Exclude empty cells outside used range
        saveAsView: false              // Don't apply format strings to values
    });

    You can further refer to the attached sample that opens the SJS file while providing various configuration options that can be used for optimizing the load and save operations (see below).

    Please let us know if you require any further assistance.

    Kind Regards,

    Chirag

    Attachment: https://jscodemine.mescius.io/share/JTGCs4UaLEifmqDyByfCwQ

    References:

    1. OpenOptions: https://developer.mescius.com/spreadjs/api/modules/GC.Spread.Sheets#openoptions
    2. SaveOptions: https://developer.mescius.com/spreadjs/api/modules/GC.Spread.Sheets#saveoptions
    3. Import & Export Demo: https://developer.mescius.com/spreadjs/demos/features/spreadjs-file-format/overview/purejs
Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels