catie_carmody
ServiceNow Employee
ServiceNow Employee

Excel Export Limits & Properties

How to Prevent Performance Issues

There are two ways to export lists/reports to Excel in the platform:

  • Scheduled Reports (which run via worker threads)
  • Export to Excel from a list (which run via user transactions)

Due to the way the platform must load the data into memory while converting to .xls and .xlsx formats, there are memory constraints when exporting large reports to Excel. For this reason the platform restricts the number of rows/columns you can export which is controlled via system properties:

  • Row Limits: glide.ui.export.limit, glide.xlsx.export.limit, glide.excel.export.limit
  • Column Limits: glide.xlsx.max_cells, glide.excel.max_cells

Sometimes these properties must be changed to fit business needs so full reports can be exported, however, this makes the platform vulnerable to low memory conditions. This leads to users experiencing degraded performance on the affected node.

Export Properties: Default Values

Note: The glide.xlsx.export.limit and glide.xlsx.max_cells properties are available only beginning with the Helsinki release.

For additional information see the product documentation topic Export limit properties.

 

Additional Information: Export Limit Properties

The glide.ui.export.limit property is used only if the glide.excel.export.limit property is set to zero or less.   This is also applicable for all other glide.<format>.export.limitproperties.  For these cases, the platform will use the glide.ui.export.limit value, which by default is set to 10,000.

Additionally, the legacy com.glide.processors.XMLProcessor.record_count property can also affect the export limits. 

If these properties have been changed, the following logic determines the limit that will be used:

  • If glide.<format>.export.limit is greater than zero, use it.
  • If com.glide.processors.XMLProcessor.record_count is greater than zero, use it.
  • If both of these properties are less than zero, then use glide.ui.export.limit, which by default is set to 10,000.

 

How to Work Around an Excel Export Memory Issue

  • If on Helsinki or later releases, set all reports that are exporting to Excel to use the .xlsx format instead of .xls. Exporting to .xlsx is more optimal in regards to memory consumption.

    The glide.xlsx.export.limit property controls the export limit for exporting to "Excel (.xlsx)". If you decide to take this approach, ensure that the glide.xlsx.export.limitvalue matches the glide.export.excel.limit value (assuming it's been changed from the default).

    Example: Say Report A is exporting 30,000 rows and glide.export.excel.limit is set to 50,000. If you change the report to export to "Excel (.xlsx)", you need to set glide.xlsx.export.limit to 50,000. Otherwise, Report A will be truncated at the default limit of 10,000 rows.

    Note: .xlsx and CSV are preferred over .xls as a method of exporting.  Both file types can be opened in Excel, but .xlsx consumes less memory during the export.

  • Stagger the run of the reports such that those exporting large numbers of records are not overlapping