
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.
SetRangeData: approximately 3× fasterUpgrading from 4.3.13 to 4.4.0 requires no changes to existing code.
| Item | Details |
|---|---|
| CPU | AMD Ryzen 9 9900X (12 cores / 24 threads) |
| OS | Windows 11 Pro |
| Runtime | .NET 8.0 (x64, Release build) |
| Versions compared | v4.3.13 ↔ v4.4.0 |
| Method | Each scenario: 1 warmup + 3 measurement runs, using min / median |
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.
| Version | Time |
|---|---|
| v4.3.13 | 70,175 ms (about 70 seconds) |
| v4.4.0 | 6 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.
Scenario: Sort 10,000 rows × 5 columns of random integers in ascending order by column A.
| Version | Time |
|---|---|
| v4.3.13 | 397 ms |
| v4.4.0 | 39 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.
Scenario: Bulk-load a 2D array of 10,000 rows × 20 columns (200,000 cells in total) via SetRangeData().
| Version | Time |
|---|---|
| v4.3.13 | 326 ms |
| v4.4.0 | 104 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.
The main bug fixes are as follows.
=+D25-F8-F14)'BS (JPY)'!B3, 'My Sheet'!A1)ClearConditionalStylesImpact on compatibility has been kept to a minimum, but the following API changes have been made.
Worksheet.ConditionalStyleApplyCells propertyConditionalStyleApplyCellCollection classPlease use the following methods instead.
bool hasStyle = worksheet.HasConditionalStyle(row, col);
bool hasStyle = worksheet.HasConditionalStyle(new CellPosition("A1"));
bool hasStyle = cell.HasConditionalStyles;
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.
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.