12.1.7 - 2026-10-26
Improvements
- Spreadsheet gains
ShowColumnHeadersandShowRowHeadersparameters, bothtrueby default. Setting one tofalsehides the column letters or the row numbers together with the space they take, their resize handles and whole-row or whole-column selection, which suits presentation grids where the axis labels live in frozen rows and columns instead. The setting applies to every sheet of the workbook and can be toggled at runtime, and frozen pane splitters stay in place when the headers are hidden (#2728). Thanks to @panoskentros! - Spreadsheet formula engine supports the
LOOKUPandINDIRECTfunctions, which returned#NAME?before.LOOKUPcovers the vector and array forms with Excel's case-insensitive comparison, type skipping and vector extension rules.INDIRECTaccepts A1 text with or without a sheet name, a defined name and R1C1 text with offsets relative to the formula cell, returns#REF!and#VALUE!as Excel does, and is volatile so dependent formulas recalculate on every change. Both are shown in the Spreadsheet formulas demo (#2777). - Spreadsheet keeps sheet-scoped, built-in and hidden defined names.
Worksheethas aDefinedNamesdictionary for names scoped to that sheet, a formula resolves a sheet-scoped name before a workbook name of the same name, renaming a sheet rewrites references in both, and xlsx files round-tripPrint_Area,Print_Titles,_FilterDatabaseand thehiddenattribute instead of dropping them (#2777). - Chart stacked column and bar series gain a
StackGroupparameter. Stacked series that share a group form one stack and different groups render side by side in the same category, each with its own value axis fit, so revenue and expense breakdowns can sit next to each other and next to a plain column series (#2776).
Fixes
- Spreadsheet tables, filters, conditional formats, data validation, images and charts now follow row and column insertion and deletion. The worksheet shifted cells, sizes, merged cells and formulas but left every other structure at its old address, so inserting a row inside a table kept the header, totals and banding styles on the old rows while the values moved, and the row appeared to be inserted several rows below the cursor. Table ranges and columns, sheet and per-column filters with the columns in their criteria, conditional format and validation ranges, validation formulas, drawing anchors and chart series references on any sheet now move or resize with the edit, and deleting rows or columns snapshots every table so undo restores a trimmed or removed table exactly (#2779).
- Spreadsheet
VLOOKUP,HLOOKUP,MATCHandXMATCHtreat a blank lookup value and blank cells as Excel does, so a blank lookup no longer matches the first blank cell of the lookup column and shows an empty string where Excel shows0. The approximate modes no longer fail on a column that mixes numbers and text (#2777). - Spreadsheet
XLOOKUPandXMATCHmatch Excel for blank cells, empty strings and values of different types. A blank lookup value and an empty string are no longer treated as equal, and the approximate and binary search modes order values as Excel does, so the next-larger mode returns the smallest larger value instead of the first larger one it meets. - Spreadsheet saves xlsx files that Excel opens. Shared formulas that reference a sheet by name are written as plain formulas, external workbook links and the names and formulas that use them survive a load and save, a list validation whose source is a range is read as a reference and written unquoted, and a list of several items is written in the form Excel accepts (#2777).
- Tooltip content taller than the viewport scrolls inside the tooltip instead of growing the document. When no side of the target had room, the popup was clamped to the viewport edge and overflowed the page, which added a document scrollbar, covered the target and raised a spurious
MouseLeavethat reopened the tooltip in a loop. The fallback now picks the side with the most room, caps the popup at the viewport edge withmax-heightand inner scrolling, and keeps amax-heightfromTooltipOptions.Style(#2548). - Chart column series and stacked column series no longer overlap when used in the same chart, and the same holds for bar and stacked bar series. Each family laid itself out from its own siblings only, so a stacked series centered its stack on the category tick regardless of the plain columns next to it. One band per category is now shared by all column-type or bar-type series for rendering, tooltips, data labels and hit-testing (#2776).
- AutoComplete no longer flashes stale suggestions after the input drops below
MinLength. Backspacing kept the previous matches on screen until the filter delay elapsed, and the next keystroke reopened the popup with the same stale items. The search text is cleared when the popup closes and the input listener keeps the popup closed while the value is shorter thanMinLength(#2775).