Release Notes
Update history for ReoGrid One (V5) and ReoGrid v4.
ReoGrid One (V5)
5.2.0 — 2026-10-22
Added
| Area | What |
|---|---|
| Rendering | Direct2D 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 |
| Rendering | WinForms RenderToBitmap — draws the view into an image with the current renderer, no window needed |
| XLSX | Shared formulas (t="shared") are expanded on load, so every cell carries its own formula (saved as ordinary formulas) |
| Number formats | Elapsed 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
| Area | What |
|---|---|
| Performance | Faster 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) |
| Performance | Faster Avalonia drawing, the same way (25.7 ms → 4.9 ms per frame for a 100-row × 20-column view) |
| Performance | Faster 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) |
| Performance | On 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 |
| Performance | Faster value writes in a workbook with several sheets and no formulas (3 sheets × 2 million cells: 48.6 ms → 22.4 ms) |
| Performance | In 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 |
| Performance | In 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
| Area | What |
|---|---|
| Display | A 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 #### |
| Display | A 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) |
| WinForms | Drawing repeatedly onto the same Graphics with RenderTo / RenderFrame compounded the scale, and at 150% threw OverflowException after a few dozen frames |
| Data validation | In 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 |
| Virtualization | In 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) |
| Display | Text 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 validation | A 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 |
| WinForms | The 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 |
| Display | A 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 |
| XLSX | In 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() |
| XLSX | Loading: 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 |
| XLSX | Saving: 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 |
| Virtualization | In 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 |
| Formulas | Results 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! |
| Formulas | Function 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 |
| Formulas | A 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 formats | The 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 |
| Input | In 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) |
| Editing | ClearCell (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 |
| Editing | The 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 |
| Selection | The arrow keys and Shift+arrow keys stopped on hidden rows and columns |
| Rows & columns | Inserting 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 |
| Undo | Undoing 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 |
| Filters | Rows 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 formats | Top/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 cells | A 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 |
| AutoFill | In 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 |
| Outline | A 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 |
| Clipboard | Copying a range that runs off the sheet, and pasting beyond its edge, threw |
| Worksheet | An 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
| Area | What it brings |
|---|---|
| Input and protection | Data validation, cell notes, sheet protection (per-cell locks) |
| Data | Find and replace, multi-range selection |
| Tables | Excel’s “Format as Table” (Tables). 60 built-in styles; row and column stripes, first- and last-column emphasis, totals-row colouring |
| Styles | Banded 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 formats | Japanese era dates, fractions and scientific notation |
| Formulas | 149 functions (27 new): SUBTOTAL AGGREGATE XLOOKUP XMATCH INDIRECT ADDRESS WORKDAY NETWORKDAYS WEEKNUM JIS ASC and more (Functions) |
| Printing | Print titles, headers and footers |
| Only 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 | |
| XLSX | XlsxColumnWidths.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 |
| Drawing | EastAsianText: 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 |
| Saving | reogrid-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 |
| Licensing | Development-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
| Area | Fix |
|---|---|
| XLSX | Opening 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) |
| Formatting | Borders and number formats could not be applied to cells outside the used range |
| Editing | The in-cell editor painted itself white, even over a filled cell |
| Display | On very short rows, row-header numbers overlapped the neighbouring rows |
| XLSX | Lazy 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 |
| XLSX | Opened 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 |
| Display | In 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 |
| Display | Text 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) |
| Editing | Opening 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 |
| Editing | On 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
| Area | What it brings |
|---|---|
| Memory | Fully virtualized. About 16-23 B per cell; empty cells cost nothing |
| Styles | Four-level inheritance (Cell ◁ Row ◁ Column ◁ Sheet); identical formatting is shared automatically |
| Formulas | 122 functions, dependency recalculation, cross-sheet references, defined names |
| Number formats | Excel format codes (sections, conditions, colors) |
| Cell types | Six (checkbox / dropdown / progress / button / hyperlink / sparkline) |
| Conditional formatting | The full OOXML set, icon sets included |
| Display | High DPI, freeze panes, zoom; only the visible area is drawn |
| Editing | An in-cell editor with IME and formula highlighting |
| Data | Sorting (multi-key), filtering (value lists and conditions), auto-fill, outlines, undo |
| I/O | reogrid-json, CSV, XLSX (streaming), PDF |
| Printing | A UI-independent pagination engine shared by PDF, WinForms and WPF |
| Platforms | WinForms / 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
| Feature | Notes |
|---|---|
| Charts | Needs a floating-object foundation first |
| Shapes and text boxes | Images are already supported |
| Data binding | To be redesigned around the headless core |
| Threaded comments | The classic note is already supported |
| More cell types | DatePicker / RadioButton / NumberInput / image types |
Known limitations
| Area | Limitation |
|---|---|
| Formulas | Dynamic arrays (spill) — FILTER SORT UNIQUE SEQUENCE LET LAMBDA |
| Formulas | Localized function names; PHONETIC |
| Printing | Manual page breaks; printing only part of the print range |
| XLSX | Banded rows, split (unfrozen) panes |
| Undo | Outline operations |
| Avalonia | Printing (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).
More about ReoGrid One:
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.
- Content with mixed formatting is saved as
- New Added PDF export (WinForms).
PDFExporter.Exportwrites 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
&Ppage number,&Npage count,&Ddate,&Ttime,&Asheet name, and a different first page or odd/even pages. Set them throughWorksheet.HeaderFooter, and their distance from the paper edge throughPrintSettings.HeaderMargin/FooterMargin. - New Printing: added fit to pages and centering.
PrintSettings.FitToPagewithFitToPagesWide/FitToPagesTallshrinks the print area into the given number of pages, like Excel’s “Fit to” option, andCenterHorizontally/CenterVerticallycenter 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(orExcelFileFormatArgument.WorksheetLoadStrategyper load).LoadAll(default): every sheet is parsed duringLoad— 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: likeDelayLoad, 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 defaultLoadAllparses every sheet duringLoad, 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
MemoryStreamthat 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 callSetLicense(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 simplifiedPHONETIC
- Logical / conditional:
- 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 anAddDataSource(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/ColumnOutlineButtonLocationto set the outline-button position independently for rows and columns (the existingOutlineButtonLocationsets 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-F14now 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
ConditionalStyleApplyCellsproperty and theConditionalStyleApplyCellCollectionclass. - New Added
Worksheet.HasConditionalStyle(row, col)/HasConditionalStyle(CellPosition)to check whether a conditional style is applied to a given cell. - New Added the
Cell.HasConditionalStylesproperty — 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—ControlStylechanges are now reflected immediately. - New Added a
StyleChangedevent toControlAppearanceStyleto 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
DoActiononWorksheet. - 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
IsSuspendingScrollToCellproperty 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
SheetTabwas not drawn correctly after rearranging worksheets. - Fix Fixed an issue where
DropdownCellcould 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
SheetTabFontproperty. - New Added the
Worksheet.Tagproperty. - Fix Fixed display issues when moving sheet tabs by drag and drop.
- Fix Fixed an issue where the
Dottedborder style was changed toDashedwhen 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
IsValidAddresstoIsValidAddressFormatfor clearer naming. - New Added
Worksheet.IsValidAddressfor stricter address string validation. - New Added
IsValidCellAddressandIsValidRangeAddressto safely generate coordinate objects while validating address validity, with improved performance. - Improvement Improved robustness by using
IsValidCellAddress/IsValidRangeAddressin ReoGrid internal processing. - Fix Fixed an issue where cells were not loaded correctly when zooming during Lazy Loading.
- Improvement Enhanced the
ADDRESSfunction to dynamically generate addresses from referenced cell values. - Improvement Enhanced the
INDIRECTfunction 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
RichFormatTextbecame corrupted when loaded and saved. - Change Changed the target framework from
net8.0-windows7.0tonet8.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
Recalculatecalls 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
Recalculateimmediately after cloning may now be redundant (it can be kept for performance-tuning purposes).
- Improvement Excel compatibility:
0can now be interpreted asFALSE. In functions such asIF, 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 acceptsTRUE/FALSEas well as1/0.HLOOKUP: supports horizontal lookup.MATCH/XMATCH: return the position of a match. Supports direction options (0,1,-1).XLOOKUP: provides flexible lookup withif_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!).FormulaStatusis nowInvalidValueinstead ofNormalin 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