ReoGrid
DOCUMENT
What's New in V4

ReoGrid V4 is a major update featuring ultra-fast data loading with lazy loading, multi-row headers, enhanced WPF support, and many other new features and improvements. In addition to improved drawing, search, outline, and conditional style capabilities, it now supports Excel-compatible formatting, flexible data integration, and worksheets with zero rows or columns—meeting advanced business requirements. The licensing model has moved to commercial, and technical support services have been strengthened.

1. Ultra-fast Data Loading

ReoGrid V4 introduces a new Lazy Loading feature.
With this, only the minimum required cell data is loaded initially, and actual data is loaded sequentially as you scroll or update the view.

This enables extremely fast initial loading even for sheets with massive data, greatly improving user experience.
For example, even with 1 million rows, the initial rendering can start in just a few hundred milliseconds, making it highly practical for business applications.

Example of enabling lazy loading for a data source:

// Set worksheet row count (e.g., 1 million rows)
worksheet.SetRows(1000000);

// Set data source in lazy loading mode
worksheet.AddDataSource(
  new RangePosition(0, 0, 1000000, 10),   // Specify range (rows x columns)
  new MyDataSource(logs),                 // Custom data source instance
  DataSourceLoadMode.LazyLoading          // Specify lazy loading
);

For details, see here.

2. Multi-row Headers

You can now specify multiple rows for column headers and merge header cells.
This allows for more flexible and advanced header layouts, such as category grouping or complex headings.

For example, you can merge the 2nd and 3rd row columns and place a label like "Category" for better visibility.

Example of setting up multi-row headers and cell merging:

var extensionHeader = worksheet.ExtensionColumnHeader;
extensionHeader.SetRowCount(3);
extensionHeader.MergeCells(0, 1, 2, 1);  // Merge 2 rows vertically from row 0, column 1
extensionHeader[0, 1].Text = "Category";

Column header with multi-row support

3. Major Enhancements for WPF

In ReoGrid V3, some features were not available in the WPF version, such as dropdown lists.

ReoGrid V4 greatly improves this, bringing almost all major features previously available in Windows Forms to WPF as well.
Now, applications using WPF can fully utilize all ReoGrid features.

Additionally, drawing speed and stability have been improved in WPF, achieving performance and usability on par with the Windows Forms version.

4. Flexible Data Source Mechanism

ReoGrid V4 introduces a flexible data source feature for worksheets.
This allows you to bind and display data from external databases, files, or APIs in your own structure.

By implementing the IDataSource<T> interface, you can create custom data sources for any data type or structure and efficiently bind them to ReoGrid.

Example of defining a custom data source and adding it to a worksheet:

public class MyDataSource : IDataSource<IDataRecord>
{
  private object[,] data;
  ...
}

...

var ds = new MyDataSource();

// Add data source to worksheet, A1:G30 is the target range
sheet.AddDataSource("A1:G30", ds);

5. Enhanced DropdownListCell

Dropdown list cells now support specifying a cell range on the worksheet as the list source, in addition to static lists.
This enables more dynamic and flexible list selection, such as providing real-time options from master data or external input.

Example of creating a dropdown list cell using a worksheet range:

// Specify the range with candidate values (e.g., G1–G3000)
var myRange = sheet1.Ranges["G1:G3000"];

// Create dropdown list cell using the above range
var dropdownList1 = new DropdownListCell(myRange);

// Apply to a cell or cell range as needed
sheet1.Cells["A1"].Body = dropdownList1;

6. Excel-compatible Custom Formatting

ReoGrid V4 supports custom format strings compatible with Excel.
You can flexibly set number, currency, and date formats just like in Excel, for more natural and intuitive display.

For example, you can specify different formats for positive, negative, zero, and text values within a single pattern, including colors and separators.

Example of setting a number format that displays negatives in red:

cell1.DataFormat = CellDataFormatFlag.Number;
cell1.DataFormatArgs = "#,##0;[Red]-#,##0";   // Excel-style format string

7. Enhanced Outline (Grouping)

Outline (grouping) features are further enhanced.
You can now choose whether the expand/collapse button appears above or below, improving compatibility with Excel and allowing more flexible UI layouts.

Example of specifying the outline button location:

// Set outline button above
sheet.OutlineButtonLocation = OutlineButtonLocation.Top;

// Set outline button below
sheet.OutlineButtonLocation = OutlineButtonLocation.Bottom;

The outline control API is also enhanced, allowing easier and more flexible programmatic control:

// Get the outermost outline group (row direction)
var outlineGroup = sheet.GetOutlineGroup(RowOrColumn.Row, 0);

// Collapse all groups
outlineGroup.CollapseAll();

// Expand all groups
outlineGroup.ExpandAll();

8. Further Drawing Performance Improvements

Drawing optimization has been further improved in V4, making rendering even faster, especially for large sheets.

Key improvements include:

  • More precise visible area detection to avoid unnecessary drawing
  • Faster update checks for target cells
  • Minimized drawing delays for scrolling, selection, and editing

This results in smoother scrolling and input, even with thousands to millions of rows.

9. Custom Conditional Filters

You can now build flexible conditional filters programmatically.
In addition to simple conditions, you can combine multiple conditions to powerfully filter worksheet data.

For example, you can dynamically show only rows where a specific column is not 'USD'.

Example implementation:

// Create conditional filter
var filter = new ConditionalDataFilter();

// Create condition: currency != USD (e.g., column 2)
var condition = new FilterCondition(2, ConditionOperator.NotEquals, "USD");

// Add to condition list
filter.Conditions.Add(condition);

// Apply filter (A1:G30 is the target range)
sheet.DoFilter("A1:G30", filter);

String search across the entire workbook is now more powerful and interactive.
You can search for cells matching a keyword, highlight them, and jump to next/previous matches—very useful for quickly finding information in large datasets.

Example of creating a search session, highlighting results, and navigating matches:

// Create search session
var searchSession = new HighlightTextSearchSession(Workbook, txtKeyword.Text, Workbook.CurrentWorksheet);
searchSession.Search();

// Highlight all matching cells
searchSession.MarkAllResultHighlight(SolidColor.Goldenrod);

// Move focus to next/previous match
searchSession.NextMatch();
searchSession.PreviousMatch();

Search sessions are reusable and support incremental search and real-time highlighting.

11. Conditional Styles

Conditional styles automatically change cell styles based on values.
Using formulas, you can apply styles such as color or font to cells matching specific values or ranges.

Example: set text color to yellow if cell value is greater than 1000.

var rule1 = new Rule("THIS > 1000", "A1:Z30", new WorksheetRangeStyle
{
  Flag = PlainStyleFlag.TextColor,
  TextColor = SolidColor.Yellow,
});

sheet.ConditionalStyles.Add(rule1);

THIS refers to the current cell value. You can use complex formulas and multiple rules for advanced visualization.

12. Enhanced Cell Locking

Cell locking is now more flexible, supporting three levels: entire sheet, range, or individual cells.
You can finely control which cells are editable or locked, ideal for business forms or applications requiring input control.

Example: only C5 is editable, all others are locked:

// Lock all cells
sheet.IsLocked = true;

// Unlock only C5
sheet.Cells["C5"].IsLocked = CellLock.UnLocked;

Conversely, to lock only C5 and leave others editable:

// Default: unlocked
sheet.IsLocked = false;

// Lock only C5
sheet.Cells["C5"].IsLocked = CellLock.Locked;

13. Floating Point Calculation Precision Correction

A new feature automatically corrects minor floating point errors, preventing results like "3.00000000000004" and providing more intuitive outputs.

This is especially useful for business use cases involving totals or decimal calculations.

Example of enabling correction:

// Enable calculation precision correction
sheet.Options.FormulaCalculationPrecision = FormulaCalculationPrecision.LowPrecision;

// Adjust epsilon threshold if needed
FormulaExtension.FormulaCalculationEplison = 0.0000001f;

14. Automated Testing via WinAppDriver

ReoGrid V4 officially supports automated UI testing with WinAppDriver.
You can automate UI operations and regression tests efficiently in code, improving maintainability and reliability.

Enable UI automation:

ReoGridControl.EnableUIAutomation = true;

Example test code (operating ReoGrid in a WinAppDriver session):

var reoGridControl = session.FindElementByClassName("ReoGridControl");

if (reoGridControl != null)
{
  reoGridControl.Click();    // get focus

  var worksheet = reoGridControl.FindElementByName("DefaultWorksheet");

  if (worksheet != null)
  {
    ...  // Run tests
  }

  ...
}

UI elements can be assigned AutomationIds for stable test scripts.

15. Support for Worksheets with Zero Rows/Columns

Worksheets can now have zero rows or columns, allowing more flexible sheet structures.
Previously, at least one cell was required, making it hard to represent empty data.

Now, you can provide a completely empty worksheet (0 rows x 0 columns) and dynamically add rows/columns as needed.

Example of setting row count to zero:

worksheet.SetRows(0)

16. More Built-in Formulas

ReoGrid V4 supports more built-in functions and formulas, enabling more complex and practical calculations directly on the worksheet, with Excel-like capabilities.


Distribution

ReoGrid V4 is now offered as a commercial licensed product, ending the previous free version.
There are two editions:

  • Professional Edition: For basic commercial use, up to 3 devices, with 1 month of technical support.
  • Enterprise Edition: For large-scale or long-term development, unlimited devices, with 3 months of technical support.

Both editions have the same features; choose based on support period and scale.

ReoGrid V3 remains available as open source (MIT license) and will continue to be maintained.

License Change

Up to V3, ReoGrid was open source under the MIT license.
From V4, it is closed-source commercial software.

A license purchase is required to use V4.
Licensed users receive a usage license defining the permitted scope.

For details, see Terms of Use (V4).

Support Services

Paid support services are available for developers and companies, offered as monthly subscriptions.

Technical Support

Basic support for using ReoGrid, including:

  • Usage consultation and onboarding
  • Sample code
  • Troubleshooting and issue resolution

Ideal for smooth daily development.

Development Support

Deeper support tailored to your project, including:

  • Implementation and design proposals
  • Customization and feature extension
  • Support for specific .NET environments (e.g., .NET 6, 8, Core)
  • Technical reviews and advice for long-term operation

Recommended for companies seeking ongoing partnership-level support.


Was the content of the page helpful?

© 2012-2025UNVELL Inc.