Skip to content

v0.36.0 - 2026-07-06

Choose a tag to compare

@jmcnamara jmcnamara released this 06 Jul 22:41

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() and Xlsx::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 picture feature 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:

  • Performance improvements:

    • Custom zero-overhead attribute extraction and optimized local_name
      matching. PR #621
    • Optimized buffer use for XLSB cell reads. PR #662
  • 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
    carries xml: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

Full Changelog: v0.35.0...v0.36.0