v0.36.0 - 2026-07-06
Added
-
Added an XLSX streaming API for cell and formula records, including shared
formula metadata. There are two new APIs:
XlsxCellReader::next_cell_with_formula()and
XlsxCellReader::next_cell_with_formula_metadata(). Previously it required 2
separate reads to get similar information. PR #654. -
Added a per-sheet, lazy XLSX API to read worksheet hyperlinks:
Xlsx::hyperlinks_by_sheet_name()andXlsx::hyperlinks_by_sheet_id(). Each
hyperlink reports its anchor range (Dimensions), external target
(URL/file/mailto), optional internal location, displayed text, and optional
tooltip. PR #659. -
Extended the
picturefeature to also extract cell position information and
the raw image data, and to handle newer Excel 365 style embedded images.
PR #652. -
Added support for reading XLSX rich string (
rstring) records. Issue #655.
Changed
-
Updated dependencies and the minimum supported Rust version (MSRV) for
release 0.36.0:atoi_simd: 0.17 → 0.18. PR #672zip: 7.0 → 8.6. This raises the MSRV from 1.83 to 1.88. PR #672quick-xml: 0.39 → 0.41, to address advisories RUSTSEC-2026-0194 and
RUSTSEC-2026-0195. Issue #674.
-
Performance improvements:
-
Refactored and unified the merged-cell handling APIs. For historical reasons
the XLSX methods for accessing merged cells were duplicated. This change
introduces a cleaner API, deprecates the older methods, and aligns the XLS
merged-cell handling with the new XLSX APIs. Issue #536. -
Made XLSX package path resolution more robust for non-standard package
layouts. Issue #638. -
Changed XLSX
<t>text handling in shared strings and inline strings to trim
leading and trailing ASCII whitespace (space, tab, CR, LF) unless the element
carriesxml:space="preserve". See PR #671 and PR #673.
Fixed
-
Fixed XLSX shared-formula cell-name replacement to be more precise for defined
names. PR #664. -
Fixed XLSX custom number-format detection to treat the
*(fill/repeat)
operator as escaping the character that follows it. PR #667. -
Improved the XLS error message when a file is too small to be a valid
workbook. PR #670.
What's Changed
- xlsx: handle minimal package structure by @aquasync in #639
- Refactor the APIs/code for merge cells/range handling by @jmcnamara in #651
- xlsx: add support for rstring records by @aquasync in #656
- feat(xlsx): add XLSX cell+formula streaming records with shared formula metadata by @PSU3D0 in #654
- xlsx: add worksheet hyperlink reading API by @adstep in #659
- picture: extend the picture feature to include more image metadata by @jmcnamara in #652
- perf: optimise buffer use for XLSB cell reads by @alexander-beedie in #662
- perf: custom zero-overhead attribute extraction by @alexander-beedie in #621
- tests(xlsx): add regression for date cells with quoted custom number formats by @jnsn99 in #665
- Handle the
*fill operator in custom number format detection by @greymoth-jp in #667 - More informative error if the file is very short by @sftse in #670
- fix: strip whitespace from elements without xml:space="preserve" by @dayongxie in #671
- Make shared formula cell replacement more greedy by @OSjoerdWie in #664
- example: fix cargo test warning for read_picture_data example by @jmcnamara in #676
- fix(xlsx): fix whitespace trimming bug introduced in #671 by @dayongxie in #673
New Contributors
- @PSU3D0 made their first contribution in #654
- @adstep made their first contribution in #659
- @jnsn99 made their first contribution in #665
- @greymoth-jp made their first contribution in #667
- @dayongxie made their first contribution in #671
- @OSjoerdWie made their first contribution in #664
Full Changelog: v0.35.0...v0.36.0