Release Notes

Update history for ReoGrid One (V5) and ReoGrid v4.

ReoGrid One (V5)

5.2.0 — 2026-10-22

Added

AreaWhat
RenderingDirect2D drawing for WinForms (Renderer = GridRenderer.Direct2D). Draws on the GPU and lays text out with DirectWrite; a full repaint while scrolling is about 3.5× faster than GDI+. The in-cell editor, auto-fit and text overflow measure with the same renderer. Where it cannot run, the control stays on GDI+ (ActiveRenderer). The native DLLs (x64 / x86) ship in the package
RenderingWinForms RenderToBitmap — draws the view into an image with the current renderer, no window needed
XLSXShared formulas (t="shared") are expanded on load, so every cell carries its own formula (saved as ordinary formulas)
Number formatsElapsed time [h] [mm] [ss], the currency symbol of a locale tag ([$¥-411] and the like), digit groups separated by literals (000-0000 and the like), and mmmmm (the first letter of the month)

Improved

AreaWhat
PerformanceFaster WPF drawing: the text of cells whose value did not change is no longer laid out again every frame (scrolling a 1400×900 view, the UI-thread time per frame went from about 10 ms to about 1.5 ms)
PerformanceFaster Avalonia drawing, the same way (25.7 ms → 4.9 ms per frame for a 100-row × 20-column view)
PerformanceFaster drawing of numbers that change every frame on Direct2D and WPF. A number in General format was laid out again for every rounding tried to fit its column; the width of text made only of digits and number signs now comes from a per-font table of character widths (all 1,160 cells visible at 2560×1440 changing every frame: Direct2D 24.9 ms → 9.1 ms, WPF 45.0 ms → 27.4 ms)
PerformanceOn sheets with many merged cells or cell types, the cost of drawing grew with the number on the whole sheet; it now depends only on what is in view
PerformanceFaster value writes in a workbook with several sheets and no formulas (3 sheets × 2 million cells: 48.6 ms → 22.4 ms)
PerformanceIn a workbook with many formulas, a full recalculation (at the end of a load, after a sort, on undo) took time that grew with the square of the number of formulas; it no longer does
PerformanceIn a cell with long text, finding the caret position from a click slowed down with the square of the length (a 32,767-character line could freeze for more than ten seconds)

Fixed

AreaWhat
DisplayA number too wide for its column spilled into the next cell. As in Excel, a number in General format is now rounded to the digits that fit (scientific notation if even the integer part does not), and a formatted one shows ####
DisplayA merged cell whose top-left lies outside a pane was blank where it was visible (a vertical merge scrolled past its top, a merge across the frozen columns or rows)
WinFormsDrawing repeatedly onto the same Graphics with RenderTo / RenderFrame compounded the scale, and at 150% threw OverflowException after a few dozen frames
Data validationIn a workbook opened virtualized (XlsxReader.OpenVirtual), a list rule whose options come from a sheet not shown yet (such as a “lists” sheet) or from rows off screen had no options: its ▼ opened nothing, and no value passed the rule, so the edit could not be committed
VirtualizationIn a workbook opened virtualized, sorting, undo, multi-range copy and Replace All treated rows not loaded yet as empty: sorted or replaced values were overwritten when those rows loaded, and undo could erase the file’s values. A merged cell whose top-left row was above the view was drawn blank. Each now loads the rows it needs first. Formulas, conditional-format statistics, filters and row/column insert or delete still do not see rows not loaded yet — call MaterializeAll() before editing (Large data)
DisplayText too wide for its cell (stopped by a neighbouring cell, or in a merged cell) was shortened with ”…”. As in Excel, it now keeps its alignment and is clipped at the cell edge: left-aligned text shows its start, right-aligned its end, centred its middle. WinForms (GDI+ / Direct2D), WPF, Avalonia and PDF alike
Data validationA rule with its error alert turned off (ShowErrorMessage = false, or no showErrorMessage in an xlsx) rejected an invalid entry without saying so, leaving Esc as the only way out of the editor. As in Excel, such an entry is now accepted
WinFormsThe list of a dropdown cell or a list validation rule could be cut off at the edge of the grid. As on WPF and Avalonia, it now opens in a popup, above the cell when there is no room below on the screen
DisplayA merged cell showed the borders of the cells it covers as a grid inside it (in an xlsx, every cell of a merged range often carries its own borders). As in Excel, a merged cell now draws only its outer borders, in PDF and print too
XLSXIn a loaded workbook, editing a value did not recalculate the formulas that refer to it (on the same sheet or another). The formula dependencies are now registered at the end of the load; what is shown stays the file’s cached values. A workbook opened virtualized registers them after MaterializeAll()
XLSXLoading: built-in number format IDs 41–43 (thousands separator, accounting) are resolved. A row without an r attribute is read as the one after the previous row. ISO 8601 date cells (t="d") are read. A workbook with overlapping merged cells opens. A <pageSetup> without paperSize is read as Letter (the OOXML default), a font with no colour (automatic) as black, a column of width 0 as hidden, and medium dashed borders (mediumDashed and the like) as dashed lines of weight 2
XLSXSaving: functions newer than Excel 2007 are written with the _xlfn. prefix. _xHHHH_ escapes are read and written, so a cell holding control characters can be saved. A " in the options of a list validation rule is escaped. A cell in a circular reference is written with the cached value 0, as Excel does. Formatted cells without a value (a filled header, input cells formatted in advance) and formulas without a cached result were lost on save. Formatted cells without a value are now saved to reogrid-json too
VirtualizationIn a workbook opened virtualized, a sheet with rows lower than the default showed a blank lower part right after opening, until the next repaint. Row heights and hidden rows now apply from the moment the sheet opens. Find in formulas missed formulas in rows loaded later. Repainting right after the workbook was closed threw for a sheet not shown yet
FormulasResults now match Excel. A formula that refers to an empty cell returns 0. 0^0 returns #NUM!, 0^-1 returns #DIV/0!, and a result beyond the range of a double returns #NUM!. Cancellation in the last addition or subtraction of a formula gives 0 (=924081.39+3604900.09-759790.51-3769190.97 is 0). Rounding in the ROUND family and in CEILING FLOOR MROUND. NaN and ∞ from math functions become error values. A date function given an out-of-range serial returns #NUM!
FormulasFunction arguments and lookups now follow Excel’s rules. Lookups in VLOOKUP HLOOKUP MATCH XLOOKUP INDEX. A COUNTIF-family criterion no longer matches a value of another type. COUNT counts logical values and numeric text written directly as arguments. AND OR XOR accept ranges. An argument that takes a range returns its error if it is one. SEARCH uses wildcards, and PROPER capitalizes at Excel’s word breaks. A character escaped with ~ in a wildcard pattern matched anything. Argument handling in LEFT RIGHT SUBSTITUTE CHAR ISEVEN ISODD
FormulasA formula that reads its own cell (=A1+1 entered in A1, for example) is detected as a circular reference (#CIRCULAR!). Function names with the _xlfn. prefix resolve to the function itself. A formula using a name broken by deleting its range returns #REF! instead of #NAME?. Renaming a sheet by case alone also rewrites the sheet name in references. Deleting rows or columns could erase the formula text of a formula that moved up into their place. A long chain of operators, and edge arguments to RANDBETWEEN and REPT, threw or ran out of memory
Number formatsThe text section (@, the fourth section), a comma just before the decimal point (scaling by 1,000), colour and condition brackets in either order, and an empty negative section (negative values shown as nothing) now behave as in Excel. Decimals are rounded on the value’s 15 significant digits. A negative zero showed as -0 in General format. A number with an explicit General or @ format showed #### when too wide for its column; it is now rounded like an unformatted number
InputIn the in-cell editor and the formula bar, 50% is entered as 0.5 (with a % format), 2026/10/21 and 2026-10-21 (optionally with a time) as dates, and 13:45 as a time. A leading ' marks the entry as text and is not stored. A cell formatted as text (@) keeps what was typed as text. TRUE / FALSE become logical values on every input path, and NaN Infinity 1e400 stay text. A float passed to SetObjectValue is stored as written (0.1f used to become 0.100000001490116)
EditingClearCell (the Delete key, Clear Contents, the source of a cut) also removed the cell’s fill and bold. As with Excel’s Clear Contents, it now removes the value and formula and keeps the formatting
EditingThe in-cell editor treats a surrogate pair (an emoji, for example) as one character. Moving a reference frame while editing a formula keeps the $ of absolute references. While editing a formula, a reference to another sheet got a frame on the sheet being edited. Word-by-word drag selection carried on after the text was edited. A line that fits exactly up to a space pushed its last word to the next line
SelectionThe arrow keys and Shift+arrow keys stopped on hidden rows and columns
Rows & columnsInserting or deleting rows and columns also moves formatted cells without a value, each column’s AutoFilter criteria, and the references in formula rules of conditional formats. Deleting every row (column) left a sheet of 0 rows and crashed; as in Excel, the sheet now keeps its size and is emptied. A negative position or count throws ArgumentOutOfRangeException before anything changes. On a sheet widened past 16,384 columns by inserting columns, borders and merged cells could be drawn in the wrong place. On a sheet where deleting columns left only frozen columns, drawing threw
UndoUndoing a row or column deletion also restores the AutoFilter range, its criteria and the rows it hid, and the outline groups removed with the deletion. Recording a paste that runs over the edge of the sheet threw
FiltersRows hidden by AutoFilter are always shown again, including when they lie outside the used range and when the filter is removed. A percentage in a condition filter, such as 100%, is compared as a number
Conditional formatsTop/bottom, average, color scale, data bar and icon set rules apply only to cells holding numbers. After a rule was deleted, the rules behind it were judged on another rule’s statistics
Merged cellsA formula cell that disappears into a merge is removed from the formulas, and the formulas that referred to it recalculate. Merging a range that runs off the sheet, or several ranges one of which cuts an existing merge, is refused before anything changes. Copying and pasting an empty merged cell keeps the merge
AutoFillIn a column mixing values and formulas, formula references are still shifted to the destination. A cell with a time-only format advances by one hour, as in Excel. A target range past the edge of the sheet is filled up to the edge. A target that extends in more than one direction writes nothing
OutlineA group refused for being too deep took the existing groups with it. Removing a group re-levels the remaining ones. A group that runs off the sheet is refused
ClipboardCopying a range that runs off the sheet, and pasting beyond its edge, threw
WorksheetAn empty sheet name, and a duplicate that differs only in case, are refused. A negative row or column index, and a negative, NaN or infinite row height or column width, throw ArgumentOutOfRangeException (loading an xlsx or reogrid-json skips such values)

5.1.0 — 2026-10-16

Added

AreaWhat it brings
Input and protectionData validation, cell notes, sheet protection (per-cell locks)
DataFind and replace, multi-range selection
TablesExcel’s “Format as Table” (Tables). 60 built-in styles; row and column stripes, first- and last-column emphasis, totals-row colouring
StylesBanded rows; text rotation, stacked text and indent are drawn; a range-style API (where a row and a column style cross, the one applied last wins, as in Excel)
Number formatsJapanese era dates, fractions and scientific notation
Formulas149 functions (27 new): SUBTOTAL AGGREGATE XLOOKUP XMATCH INDIRECT ADDRESS WORKDAY NETWORKDAYS WEEKNUM JIS ASC and more (Functions)
PrintingPrint titles, headers and footers
PDFOnly the characters a document uses are embedded from the Japanese font (a PDF with Japanese text drops from about 4 MB to tens of KB). Japanese bold and italic are synthesized, as Excel does
XLSXXlsxColumnWidths.MaxDigitWidthMeasurer converts column widths using the Normal font’s digit width as measured on screen. Pass GdiTextMetrics.MaxDigitWidth on WinForms, or XlsxColumnWidths.ExcelMaxDigitWidth (the built-in table looked up at the screen’s DPI) on WPF and Avalonia, and an opened workbook’s columns come out as wide as Excel draws them on the same screen
DrawingEastAsianText: the rule for Japanese and other East Asian characters a cell’s font lacks, so a custom drawing layer can match the three built-in ones
Savingreogrid-json keeps freeze panes, zoom, hidden sheets, tab colours, page setup and images. XLSX round-trips the auto-filter, sheet protection, data validation, notes, tables and view state
LicensingDevelopment-device license activation. Each newly issued Professional key is assigned to one development device; keys you already have keep working as-is. Running ReoGrid in a development environment requires authentication with a license key, which you can download from the customer portal

Fixed

AreaFix
XLSXOpening a file made in Excel and saving it untouched changed its column widths (default-width columns got wider; hand-set widths moved by a pixel)
FormattingBorders and number formats could not be applied to cells outside the used range
EditingThe in-cell editor painted itself white, even over a filled cell
DisplayOn very short rows, row-header numbers overlapped the neighbouring rows
XLSXLazy loading for large files (OpenVirtual) left out pictures, notes, tables, conditional formats, data validation, the auto-filter, sheet protection, page setup and headers/footers — and saving such a workbook lost them
XLSXOpened workbooks had narrower columns than in Excel: about 12% for workbooks whose Normal font is Yu Gothic, MS PGothic and the like (now as wide as in Excel at 100 %, with no setup). The remaining 5% or so at 150% display scaling goes away once XlsxColumnWidths.MaxDigitWidthMeasurer is set
DisplayIn cells whose font has no Japanese (Arial, say), Japanese text was drawn about 10% larger than in Excel on WinForms, and in a different face on WPF and Avalonia. It now uses MS Gothic at the cell’s own size, as Excel does
DisplayText overflowing into a neighbour that stops it was cut short with ”…” where Excel fits it (it now runs up to the cell that stops it)
EditingOpening a cell’s editor and leaving it without a change made the row shorter. Committing a single line of text also left the row below its default height
EditingOn WPF, double-clicking a cell to edit it selected everything from the click to the end of the text. All three controls now start editing with the caret where the double-click landed (WinForms and Avalonia used to start at the end)

5.0.0 — 2026-08-19

The first stable release of V5 (ReoGrid One). There is no backward compatibility with V4 (Differences from V4).

Highlights

AreaWhat it brings
MemoryFully virtualized. About 16-23 B per cell; empty cells cost nothing
StylesFour-level inheritance (Cell ◁ Row ◁ Column ◁ Sheet); identical formatting is shared automatically
Formulas122 functions, dependency recalculation, cross-sheet references, defined names
Number formatsExcel format codes (sections, conditions, colors)
Cell typesSix (checkbox / dropdown / progress / button / hyperlink / sparkline)
Conditional formattingThe full OOXML set, icon sets included
DisplayHigh DPI, freeze panes, zoom; only the visible area is drawn
EditingAn in-cell editor with IME and formula highlighting
DataSorting (multi-key), filtering (value lists and conditions), auto-fill, outlines, undo
I/Oreogrid-json, CSV, XLSX (streaming), PDF
PrintingA UI-independent pagination engine shared by PDF, WinForms and WPF
PlatformsWinForms / WPF / Avalonia, plus headless

Packages

unvell.ReoGrid.One / .One.Wpf / .One.Avalonia / .One.Core (Installation)


Planned

Features not implemented today. Each will get its documentation page when it ships.

Under consideration

FeatureNotes
ChartsNeeds a floating-object foundation first
Shapes and text boxesImages are already supported
Data bindingTo be redesigned around the headless core
Threaded commentsThe classic note is already supported
More cell typesDatePicker / RadioButton / NumberInput / image types

Known limitations

AreaLimitation
FormulasDynamic arrays (spill) — FILTER SORT UNIQUE SEQUENCE LET LAMBDA
FormulasLocalized function names; PHONETIC
PrintingManual page breaks; printing only part of the print range
XLSXBanded rows, split (unfrozen) panes
UndoOutline operations
AvaloniaPrinting (use PDF export instead)

Each limitation is also noted on the page that covers the feature.


Licensing

Keys already issued for V4 work in V5 unchanged — no re-issue needed (Applying a License Key).

ReoGrid v4
Latest
v4.6.0
October 16, 2026
  • Note
    Development-device license activation. Starting with this version, each newly issued Professional license key is assigned to one development device. License keys you already have keep working as-is.
    • Running ReoGrid in a development environment requires authentication with a license key. You can download your license key from the customer portal.
  • New
    Added a rich-text in-cell editor (WinForms / WPF). Select part of the text while editing and apply bold, italic, underline, strikethrough, font, size, or text color to just that part — with Ctrl+B / Ctrl+I / Ctrl+U, or through Worksheet.ApplyStyleToEditingTextSelection.
    • Content with mixed formatting is saved as RichText; uniformly formatted content stays plain text with the cell style, as in Excel.
    • The editor grows to fit its content, follows center / right alignment, selects a word on double-click, and places the IME composition window at the caret.
    • While a formula is being edited, its references are colored in the editor with the same colors as their frames on the grid. Point-mode reference picking from v4.5 works in the new editor.
  • New
    Added PDF export (WinForms). PDFExporter.Export writes a worksheet, or a whole workbook, to PDF. Pages are split exactly as in printing — page breaks, paper size, margins, scaling, page order, and header/footer — so each printed page becomes one PDF page.
    • Output is vector graphics with embedded text, so it stays sharp at any zoom and the text can be selected, searched, and copied.
    • Only the glyphs the document uses are embedded: a Japanese font adds tens of kilobytes rather than megabytes. Text the cell font cannot display falls back to a CJK-capable font, as on screen.
    • Exports cell fills, all border styles, cell text (including rotated text, and wrapped or multi-line text with Japanese line-breaking rules), row/column headers, and images.
    • Built into ReoGrid with no additional dependency — the library is still a single DLL.
  • New
    Printing: the worksheet header and footer are now printed (WinForms print / print preview), including &P page number, &N page count, &D date, &T time, &A sheet name, and a different first page or odd/even pages. Set them through Worksheet.HeaderFooter, and their distance from the paper edge through PrintSettings.HeaderMargin / FooterMargin.
  • New
    Printing: added fit to pages and centering. PrintSettings.FitToPage with FitToPagesWide / FitToPagesTall shrinks the print area into the given number of pages, like Excel’s “Fit to” option, and CenterHorizontally / CenterVertically center the content on the page. Both apply to printing and PDF export.
  • Improvement
    Rich text cells render faster, and their character spacing now matches the same text in a plain cell (WinForms).
  • Fix
    Excel import/export: the page setup of an XLSX file is now read and saved — paper size, scale, fit to pages, page order, centering, print gridlines, and the print area. Previously a sheet printed on Letter paper at 100% over its whole used range regardless of the file, and a portrait sheet was loaded as landscape.
  • Fix
    Excel import/export: the print header/footer and page margins are no longer lost when an XLSX file is loaded and saved, and the right margin is no longer loaded with the bottom margin’s value.
  • Fix
    Printing: cell text no longer loses its last character, and wrapped text no longer breaks one character early or has the top of its first line cut off. Wrapped text now wraps at the width of the cell, as in Excel.
  • Fix
    Printing: pictures and shapes on the screen no longer shift after printing or print preview at a page scale other than 100%.
  • Fix
    License: a trial key is no longer treated as expired on a machine that uses a non-Gregorian calendar (such as the Thai Buddhist calendar), and the trial deadline no longer shifts with the time zone.
  • Change
    The plain TextBox cell editor (WinForms / WPF) is replaced by the rich-text editor. Ctrl+Z inside the editor is not supported yet, and on WPF the editor is no longer exposed to UI Automation as a TextBox.
Previous Releases

v4.5.1

July 9, 2026
  • New
    Added a selectable worksheet load strategy for multi-sheet XLSX files, set via ReoGridControl.WorksheetLoadStrategy (or ExcelFileFormatArgument.WorksheetLoadStrategy per load).
    • LoadAll (default): every sheet is parsed during Load — the conventional behavior.
    • DelayLoad: only the active sheet is parsed up front; the rest are loaded on first access, such as when their tab is clicked.
    • BackgroundDelayLoad: like DelayLoad, but a background task also preloads the remaining sheets, so switching tabs usually finds them already loaded.
  • Change
    Multi-sheet XLSX files load eagerly by default again. The implicit per-sheet lazy loading added in v4.5.0 could briefly freeze the UI when a large sheet’s tab was clicked, so it is now opt-in through WorksheetLoadStrategy.DelayLoad / BackgroundDelayLoad. The default LoadAll parses every sheet during Load, as in v4.4 and earlier.
  • Fix
    Rendering: fixed a rare crash while drawing when the visible area grew by a row or column mid-render.
  • Fix
    Excel import: fixed a crash when using delayed sheet loading from a MemoryStream that the caller disposed before a pending sheet was loaded — the file bytes are now retained until loading completes.

v4.5.0

June 12, 2026
  • Note
    A license key is now required. From v4.5 onward, you must set a valid license key with SetLicense(string) before use. If no key is set, a gray overlay covers the entire grid and mouse/keyboard input, cell editing, and printing are blocked. When upgrading from v4.4 or earlier, be sure to call SetLicense(string) before using the grid.
    • License keys are tamper-protected with a digital signature.
    • License keys are available from the customer portal (https://portal.unvell.com/).
  • New
    Added 47 Excel-compatible formula functions, spanning logical, lookup, date, statistical, and text categories.
    • Logical / conditional: IFERROR / IFS / SUMIFS / COUNTIFS / AVERAGEIFS
    • Lookup / reference: INDEX / OFFSET / CHOOSE
    • Math / statistics: ROUNDUP / ROUNDDOWN / INT / TRUNC / SQRT / SIGN / PI / SUMPRODUCT / RANK / LARGE / SMALL / MEDIAN / STDEV / STDEVP / VAR / VARP
    • Date / time: DATE / DATEVALUE / TIMEVALUE / WEEKDAY / WEEKNUM / EDATE / EOMONTH / NETWORKDAYS / WORKDAY
    • Text: TEXT / SUBSTITUTE / REPLACE / CONCAT / CONCATENATE / TEXTJOIN
    • Information: ISTEXT / ISNONTEXT / ISNA / ISLOGICAL / ISEVEN / ISODD
    • Double-byte (CJK): JIS / ASC / DBCS, plus a simplified PHONETIC
  • New
    Added point-mode formula editing. While editing a formula, click a cell to insert or replace a cell reference at the cursor without leaving edit mode. Drag to extend it to a range, and use the arrow keys to move the active reference — the same feel as Excel and Google Sheets. Every reference in the formula is color-coded and highlighted.
    • Drag a highlight border edge to move the reference, or drag a corner to resize it.
  • New
    Added reading and writing of XLSX outlines (grouping). Row and column outline levels and collapsed state are now exchanged with Excel files.
  • New
    Exposed LazyLoadDataSource, with an AddDataSource(source, mode) overload that infers the range automatically from the record and column counts.
  • Improvement
    Substantially improved XLSX loading performance and memory usage.
    • Introduced an in-house streaming parser that avoids generating intermediate data during loading.
    • Workbooks with many sheets now parse only the open sheet up front and materialize the others on first access.
    • Reduced memory usage by about 37% on a 10-million-cell workbook (3.9 GB → 2.5 GB). With viewport-aware style evaluation, memory dropped a further ~40% and load time ~60%.
    • Sped up cell loading by about 50% (number-format pattern caching, optimized reference resolution, and more).
  • Improvement
    Strengthened XLSX import compatibility.
    • Support for multi-section / conditional custom number formats.
    • Fixed theme colors being loaded with light/dark swapped, so cells now display the correct color.
    • Correct interpretation of rich-text formatting (whether bold is on) and splitting into separate lines at each line break.
    • Display of images anchored to a cell position (such as stamps) and the preview image of embedded OLE objects.
    • Inline-string cells are now loaded as text.
  • New
    Added Worksheet.ClearStyleCache(range?) for releasing memory — after a large bulk load you can release cached styles.
  • New
    Added Worksheet.RowOutlineButtonLocation / ColumnOutlineButtonLocation to set the outline-button position independently for rows and columns (the existing OutlineButtonLocation sets both at once).
  • Fix
    Formulas: fixed a rare crash when clicking a cell partway through typing a function name.
  • Fix
    Styles: fixed an issue where changing one of several cells that share a style also changed the others.
  • Fix
    Styles / fonts: fixed an issue where cells that inherit a font changed size or weight when an edit was committed or on redraw.
  • Fix
    Printing: fixed an empty sheet being split across two pages, an exception when dragging a page break, and an extra one-cell page for rows/columns that fit exactly at the page edge.
  • Fix
    Excel import: fixed split windows being mistaken for frozen panes, which crashed the entire sheet load.
  • Fix
    Rich text (WinForms): fixed text being clipped when auto-fit left the row height too short.
  • Fix
    Fixed console/shell output being disrupted after CSV export.

v4.4.0

April 24, 2026
  • Improvement
    Faster rendering: cached cell style and border-drawing resources to speed up screen redraws.
  • Improvement
    Faster font handling: optimized font name lookup and font object retrieval for smoother behavior when displaying large numbers of cells.
  • Improvement
    Faster formula recalculation: redesigned the dependency-tracking algorithm, achieving roughly 2.7× speedup in cases where a single cell is referenced by many other cells.
  • Improvement
    Faster sorting: significantly improved sort performance on large datasets by suspending unnecessary processing during the sort.
  • Improvement
    Faster conditional formatting: optimized evaluation timing — instead of recalculating on every cell edit, conditional formats are now processed in batch at render time.
  • Improvement
    Faster bulk data operations: improved performance of range data assignment, paste, and undo operations by suppressing screen updates and event firing during batch processing.
  • Fix
    Formulas: expressions with a leading plus sign such as =+D25-F8-F14 now behave the same as in Excel.
  • Fix
    Formulas: references with parentheses or whitespace in sheet names (e.g., 'BS(USD)'!B3, 'My Sheet'!A1) are now handled correctly.
  • Fix
    Sorting: formulas now correctly move along with their rows during sort (matching Excel behavior).
  • Fix
    Conditional formatting: fixed an issue where cell styles were not properly cleared when a conditional format was removed.
  • Change
    Removed the ConditionalStyleApplyCells property and the ConditionalStyleApplyCellCollection class.
  • New
    Added Worksheet.HasConditionalStyle(row, col) / HasConditionalStyle(CellPosition) to check whether a conditional style is applied to a given cell.
  • New
    Added the Cell.HasConditionalStyles property — a lightweight check that does not require materializing the style list.

v4.3.14

March 25, 2026
  • Fix
    Fixed mouse scroll behavior in NormalViewportController, correctly enforcing horizontal and vertical scroll limits.
  • Fix
    Fixed a background color application issue in ControlShare — ControlStyle changes are now reflected immediately.
  • New
    Added a StyleChanged event to ControlAppearanceStyle to notify when a style color is changed.

v4.3.12

February 18, 2026
  • Fix
    Fixed slow Excel export when cell fonts were specified.
  • Fix
    Fixed RGF save/load so that number-format arguments specified as a string pattern (e.g., 0.0) are preserved correctly.

v4.3.11

February 12, 2026
  • Fix
    Fixed a regression introduced in v4.3.10 where the borders of the last row and last column were not drawn.
  • Fix
    Fixed an issue in multi-page printing where cells in the last row and last column were not printed on the final page.

v4.3.10

February 7, 2026
  • New
    Exposed DoAction on Worksheet.
  • Fix
    Fixed scrollbar position during synchronization.
  • Fix
    Fixed cell overflow during printing.
  • Fix
    Fixed font styles in Excel export.

v4.3.8

December 25, 2025
  • Fix
    Fixed an issue in WPF rich text where font keys were not detected; added a font lookup fallback.
  • Fix
    Fixed rendering of header dropdown buttons.
  • New
    Added the IsSuspendingScrollToCell property to temporarily disable scrolling to a cell.
  • Improvement
    Improved row/column select-all behavior, resolving an issue where the view was forcibly scrolled to the last cell under certain conditions.

v4.3.4

December 3, 2025
  • Fix
    Fixed an issue in the WPF version where RichText was not rendered correctly under certain conditions.
  • New
    Added Undo / Redo support for built-in cell types.
  • Fix
    Fixed an issue where row header background colors were not displayed correctly under certain conditions.
  • Fix
    Fixed guideline and selection display for hidden cells.

v4.3.3

November 13, 2025
  • Fix
    Fixed an issue where some hidden columns could not be re-shown after loading an RGF file.
  • Fix
    Fixed an issue where cell formulas were not recalculated under certain conditions.
  • Fix
    Fixed an issue where SheetTab was not drawn correctly after rearranging worksheets.
  • Fix
    Fixed an issue where DropdownCell could not be copied.
  • Fix
    Fixed an issue where the scrollbar position was not displayed correctly under certain conditions when freezing cells.

v4.3.2

November 6, 2025
  • Fix
    Fixed an exception that occurred with no-argument formulas (e.g., ABS(), COS()).
  • Fix
    Fixed issues with text wrapping (line breaks) inside cells.
  • New
    Added text wrapping support for header cells.
  • Fix
    Fixed an issue where outline (group) level button text was not drawn correctly when zooming.
  • Fix
    Fixed scaling issues in rich text rendering.
  • Fix
    Fixed an issue where column widths were not retrieved correctly when loading Excel files.
  • Fix
    Fixed a rare error that occurred in header cells.
  • Fix
    Fixed an issue in the WPF version where sheet tabs were not displayed correctly.
  • New
    Added the SheetTabFont property.
  • New
    Added the Worksheet.Tag property.
  • Fix
    Fixed display issues when moving sheet tabs by drag and drop.
  • Fix
    Fixed an issue where the Dotted border style was changed to Dashed when exported to Excel.
  • Fix
    Fixed an issue where cells without an explicit font size changed from 10.5 to 12.5 when exported to Excel.

v4.3.0

October 6, 2025
  • Change
    Renamed IsValidAddress to IsValidAddressFormat for clearer naming.
  • New
    Added Worksheet.IsValidAddress for stricter address string validation.
  • New
    Added IsValidCellAddress and IsValidRangeAddress to safely generate coordinate objects while validating address validity, with improved performance.
  • Improvement
    Improved robustness by using IsValidCellAddress / IsValidRangeAddress in ReoGrid internal processing.
  • Fix
    Fixed an issue where cells were not loaded correctly when zooming during Lazy Loading.
  • Improvement
    Enhanced the ADDRESS function to dynamically generate addresses from referenced cell values.
  • Improvement
    Enhanced the INDIRECT function for more accurate cell reference management and proper interpretation of lowercase addresses.
  • Fix
    Fixed an issue where row number text was not scaled during zoom operations.
  • Fix
    Fixed an issue where Excel files containing certain RichFormatText became corrupted when loaded and saved.
  • Change
    Changed the target framework from net8.0-windows7.0 to net8.0-windows, supporting more general .NET 8 Windows environments.
  • Improvement
    Improved recalculation after worksheet cloning.
    • Resolved cases where calculation results became inconsistent or outdated immediately after cloning sheets containing shared formulas and dependency chains.
    • Reorganized reference remapping and recalculation order during clone creation to guarantee an immediately consistent display.
    • In most cases, additional Recalculate calls in existing code are no longer necessary. Explicit recalculation is still possible when needed.
  • Improvement
    Improved reliability of border (Border) Excel output.
    • Normalized output to avoid writing empty/transparent borders as unnecessary "thin" styles.
    • Fixed mapping for Dotted / DashDot / DashDotDot / medium* styles to prevent shape corruption during re-import.
    • Resolved an issue where unnecessary opposite-side lines reappeared in corner cells when the "outside only" setting was applied.
  • Note
    If you were relying on inner lines that were unintentionally added after setting "outside only" in previous versions, you will need to set them again explicitly.
  • Note
    Code that called Recalculate immediately after cloning may now be redundant (it can be kept for performance-tuning purposes).
  • Improvement
    Excel compatibility: 0 can now be interpreted as FALSE. In functions such as IF, 0 evaluates as FALSE and any non-zero number as TRUE.
  • New
    Implemented lookup functions.
    • VLOOKUP: supports exact and approximate matching with numeric and string keys. The fourth argument accepts TRUE/FALSE as well as 1/0.
    • HLOOKUP: supports horizontal lookup.
    • MATCH / XMATCH: return the position of a match. Supports direction options (0, 1, -1).
    • XLOOKUP: provides flexible lookup with if_not_found, match modes, and search modes.
  • Improvement
    Operator improvements: the multiplication operator (*) can now convert numeric strings to numbers (e.g., "10"*2 → 20).
  • Improvement
    Error handling improvements: division by zero is now processed as InvalidValue (the Excel-compatible #DIV/0!). FormulaStatus is now InvalidValue instead of Normal in this case.
  • Note
    When using approximate matching, the data must be sorted in ascending or descending order, the same as in Excel.
  • Improvement
    Improved stability.
  • Improvement
    Improved rendering performance.
  • New
    Added support for .NET 8 and .NET Framework 4.8.
  • Fix
    Fixed an issue where red text formatting was not displayed correctly.

v4.0.0

Major Release
  • New
    Lazy Loading — ultra-fast data loading mode.
  • New
    Multi-row header support.
  • Improvement
    Significantly enhanced WPF version.
  • New
    Added the data source mechanism.
  • Improvement
    Enhanced DropdownListCell.
  • New
    Added ComboListCell (with auto-completion support).
  • New
    Added support for Excel custom format patterns.
  • Improvement
    Enhanced outlines.
  • New
    Added customizable condition filters.
  • New
    Added conditional styles.
  • New
    Added string search functionality.
  • Improvement
    Enhanced cell locking.
  • New
    Added input validation.
  • New
    Worksheet data now supports column 0 and row 0.
  • Improvement
    Further rendering speed improvements.
  • Improvement
    Floating-point calculation precision corrections.
  • New
    Automated testing support via WinAppDriver.
  • Improvement
    Additional formula functions supported.

For an overview of the major new features in ReoGrid v4:

What's New page