Announcing ReoGrid 4.4 — Performance Improvements for Large-Scale Data

· unvell team
Announcing ReoGrid 4.4 — Performance Improvements for Large-Scale Data

Introduction

ReoGrid is a .NET component that brings Excel-like spreadsheet functionality to WinForms and WPF applications.

The newly released ReoGrid 4.4 is a version that significantly improves processing performance while maintaining full API compatibility. In response to the many requests we have received from customers regarding “responsiveness when handling large data sets” and “time required for sort operations,” we have substantially accelerated the operations that were time-consuming in the 4.3 series.

This article introduces the main improvements in 4.4, supported by measured results comparing v4.3.13 and v4.4.0 in the same environment.


Key Improvements

  • Bulk data loading with conditional formatting: approximately 11,700× faster (70 seconds → 6 milliseconds)
  • Sorting 10,000 rows: approximately 10× faster
  • Bulk loading 200,000 cells via SetRangeData: approximately 3× faster

Upgrading from 4.3.13 to 4.4.0 requires no changes to existing code.


Benchmark Environment

ItemDetails
CPUAMD Ryzen 9 9900X (12 cores / 24 threads)
OSWindows 11 Pro
Runtime.NET 8.0 (x64, Release build)
Versions comparedv4.3.13v4.4.0
MethodEach scenario: 1 warmup + 3 measurement runs, using min / median

Performance Improvements in Detail

1. Conditional Formatting with Bulk Data Entry: ~11,700× Faster

Scenario: One conditional formatting rule (“set text color to red when value exceeds 100”) is applied to A1:A5000, then values are written sequentially into 5,000 cells.

VersionTime
v4.3.1370,175 ms (about 70 seconds)
v4.4.06 ms
sheet.ConditionalStyles.Add(new Rule("THIS > 100", "A1:A5000", new WorksheetRangeStyle
{
    Flag = PlainStyleFlag.TextColor,
    TextColor = SolidColor.Red,
}));

for (int r = 0; r < 5000; r++)
{
    sheet[r, 0] = r;
}

Business impact: Workflows that load data from external systems into report templates with pre-configured conditional formatting now run smoothly without delay.

2. Sorting 10,000 Rows: ~10× Faster

Scenario: Sort 10,000 rows × 5 columns of random integers in ascending order by column A.

VersionTime
v4.3.13397 ms
v4.4.039 ms
sheet.SortColumn(0, new RangePosition(0, 0, 10000, 5), SortOrder.Ascending);

Business impact: Large data sets can now be sorted in the on-screen grid with the same operational feel as Excel.

3. Bulk Loading via SetRangeData: ~3× Faster

Scenario: Bulk-load a 2D array of 10,000 rows × 20 columns (200,000 cells in total) via SetRangeData().

VersionTime
v4.3.13326 ms
v4.4.0104 ms
var data = new object[10000, 20];
// ... populate data ...
sheet.SetRangeData(new RangePosition(0, 0, 10000, 20), data);

Business impact: Initial-load operations that populate the grid with records retrieved from databases or CSV files complete in noticeably less time.


Bug Fixes

The main bug fixes are as follows.

  • Formula parser: Added support for the unary plus operator (e.g., =+D25-F8-F14)
  • Formula parser: Added support for quoted sheet name references (e.g., 'BS (JPY)'!B3, 'My Sheet'!A1)
  • Sort: Fixed an issue where formula cells remained at their original positions during sorting. As in Excel, formulas now move together with their rows
  • Conditional formatting: Fixed a defect in the rule removal order in ClearConditionalStyles

API Changes

Impact on compatibility has been kept to a minimum, but the following API changes have been made.

Removed

  • Worksheet.ConditionalStyleApplyCells property
  • ConditionalStyleApplyCellCollection class

Please use the following methods instead.

Added

bool hasStyle = worksheet.HasConditionalStyle(row, col);
bool hasStyle = worksheet.HasConditionalStyle(new CellPosition("A1"));
bool hasStyle = cell.HasConditionalStyles;

How to Upgrade

ReoGrid V4 and later are provided as commercial editions. The latest assemblies can be downloaded by signing in to our customer portal.

For existing projects, the upgrade is completed simply by replacing the assembly reference with the downloaded version. No code changes are required.

If you were directly referencing ConditionalStyleApplyCells, please replace those references with HasConditionalStyle() as shown above.


Closing

ReoGrid 4.4 is a release that focuses on resolving the performance issues that have the greatest impact on existing users, rather than on adding new features.

All figures presented above are measured values obtained by comparing v4.3.13 and v4.4.0 with identical code in the same environment.

If there are any use cases that you previously avoided due to long processing times, we would be glad if you would give 4.4 a try.


Related articles

Try ReoGrid in your own project

The Excel-compatible spreadsheet component for .NET WinForms and WPF. 30-day free trial — no credit card required.