v0.32.0 - 2025-11-20
-
Refactored VBA reading functions to be on-demand for better performance.
-
Simplified
vba_project()function return type fromOption<Result<T>>toResult<Option<T>>for more idiomatic error handling. This is a breaking change.
-
Fixed out-of-memory vulnerabilities in XLS file parsing by bounding allocations.
-
Fixed and extended support for XLSX shared formulas with handling of ranges, absolute references, and column/row ranges in XLSX files.
-
Fixed XLSX issue with missing shared string sub-elements. Also improved error messages for shared string parsing issues.
-
Fixed acceptance of XLS
XLUnicodeRichExtendedStringrecords without reserved tags. -
Fixed various edge cases in XLS handling that could lead to parsing errors.
- typos: update list for latest version by @jmcnamara in https://github.com/tafia/calamine/pull/569
- Accept XLUnicodeRichExtendedString without reserved tag by @sftse in https://github.com/tafia/calamine/pull/571
- Oom alloc by @sftse in https://github.com/tafia/calamine/pull/575
- chore: applied some minor clippy lint suggestions by @jqnatividad in https://github.com/tafia/calamine/pull/578
- Fix issue with empty si element in xlsx shared string element by @jmcnamara in https://github.com/tafia/calamine/pull/576
- Delay reading of vba project by @sftse in https://github.com/tafia/calamine/pull/574
- Fix dragged formula multiple axes by @louisdewar in https://github.com/tafia/calamine/pull/566
- Fix absolute shared formulas by @louisdewar in https://github.com/tafia/calamine/pull/568
- refactor: dont need ref and ref mut by @sftse in https://github.com/tafia/calamine/pull/580
- XLSX: support replacing row/column ranges by @louisdewar in https://github.com/tafia/calamine/pull/582
- @louisdewar made their first contribution in https://github.com/tafia/calamine/pull/566
Full Changelog: https://github.com/tafia/calamine/compare/v0.31.0...v0.32.0
v0.31.0 - 2025-09-27
-
Upgraded
quick-xmlto v0.38. This was a significant change inquick-xmlrelative to v0.37 and required changes incalamineto entity handling. It also fixes EOL handling which may lead to regressions incalamineapplications if they expected to see"\r\n"in strings instead of the correct (for XML and Excel)"\n".For most users these will be inconsequential changes but please take note before upgrading production code.
-
Renamed the
"dates"feature flag to"chrono"since there is now some native date handling features without"chrono". The"chrono"flag is more specific and accurate. The"dates"flag is still supported as before for backward compatibility.This change also made some datatype methods related to date/times available in the
"default"feature set. They were previously hidden unnecessarily behind the "dates/"chrono" flag.
- Added a conversion function to
ExcelDateTimeto convert the inner serial Excel datetime to standard year, month, date, hour, minute, second and millisecond components. Works for 1900 and 1904 epochs.
-
Fixed issue where Excel xlsx shared formula failed if it contained Unicode characters. Issue #553.
-
Fixed issue where Excel XML escapes in strings weren't unescaped. For example
"_x000D_" -> "\r". Issue #469.
- fix: xlsx cell name handling for non-ASCII characters by @hayandev in https://github.com/tafia/calamine/pull/552
- xls: add simple Debug trait for Record struct by @jmcnamara in https://github.com/tafia/calamine/pull/554
- clippy: fix clippy warnings by @jmcnamara in https://github.com/tafia/calamine/pull/555
- clippy: ensure clippy is installed in github action by @jmcnamara in https://github.com/tafia/calamine/pull/564
- xml: make parsing changes for quick-xml v0.38 by @jmcnamara in https://github.com/tafia/calamine/pull/561
- datetime: add native conversion from excel datetime by @jmcnamara in https://github.com/tafia/calamine/pull/546
- @hayandev made their first contribution in https://github.com/tafia/calamine/pull/552
Full Changelog: https://github.com/tafia/calamine/compare/v0.30.1...v0.31.0
v0.30.1 - 2025-09-06
- Added
DebugandClonetoTablefor easier debugging. PR #547.
- Fixed issue Issue #548 for xls files where the
SSTrecord had an incorrect number of unique strings.
- feat:
#[derive(Debug, Clone)]onTableby @lukapeschke in https://github.com/tafia/calamine/pull/547 - xls: fix issue with incorrect SST record by @jmcnamara in https://github.com/tafia/calamine/pull/549
Full Changelog: https://github.com/tafia/calamine/compare/v0.30.0...v0.30.1
v0.30.0 - 2025-08-07
-
Unpinned the
zip.rsdependency from v4.2.0 to allow cargo to choose the correct version for the user's rustc version.The Rust MSRV was bumped to v1.75.0 (which it should have been for for
zip.rscompatibility in previous releases).See the discussion at Issue #527.
- small language changes to README.md by @mhogervo in https://github.com/tafia/calamine/pull/537
- Fix typos and add typos GH Actions workflow to prevent future typos by @jqnatividad in https://github.com/tafia/calamine/pull/539
- unpin zip and using MSRV-aware in CI by @Dirreke in https://github.com/tafia/calamine/pull/542
- @mhogervo made their first contribution in https://github.com/tafia/calamine/pull/537
Full Changelog: https://github.com/tafia/calamine/compare/v0.29.0...v0.30.0
v0.29.0 - 2025-07-17
- Add additional documentation and examples for the
Range,Cell,XlsxErrorandTablestructs, andXlsxTable and Merge methods. Issue #459
-
Pin zip.rs to v4.2.0.
The current latest release of
zip.rs, v4.3.0, requires a MSRV of v1.85.0. This release pinszip.rsto v4.2.0 to allow users to maintain a MSRV of v1.73.0 for at least one more release. It is likely thatcalaminev0.30.0 or later will move back to the latestzip.rsv4.x and require rustc v1.85.0.
- Fixed issue where XLSX files had Windows style directory separators for internal paths instead of the required Unix style separators. Issue #530.
- Fixed several XLS parsing issues which could lead to out-of-memory errors. PR #525.
- Fixed numeric underflow in
Xlsx::from_sparse()and also ensured that the associatedRangeof cells would be in row-column order. PR #524.
- Fix wrong comment by @YichiZhang0613 in https://github.com/tafia/calamine/pull/518
- docs: fixes and additions by @jmcnamara in https://github.com/tafia/calamine/pull/519
- Refactors by @sftse in https://github.com/tafia/calamine/pull/520
- Add GitHub issue templates by @jmcnamara in https://github.com/tafia/calamine/pull/523
- Numeric underflow by @sftse in https://github.com/tafia/calamine/pull/524
- More OOM fixes by @sftse in https://github.com/tafia/calamine/pull/525
- Some Changelog improvements by @jmcnamara in https://github.com/tafia/calamine/pull/522
- Pin zip.rs to v4.2.0 (for now) by @jmcnamara in https://github.com/tafia/calamine/pull/532
- Add tests and fixes for issues with Excel packaging part names by @jmcnamara in https://github.com/tafia/calamine/pull/531
- Documentation updates by @jmcnamara in https://github.com/tafia/calamine/pull/526
- docs: add documentation to the example files by @jmcnamara in https://github.com/tafia/calamine/pull/534
- @YichiZhang0613 made their first contribution in https://github.com/tafia/calamine/pull/518
- @jmcnamara made their first contribution in https://github.com/tafia/calamine/pull/519
Full Changelog: https://github.com/tafia/calamine/compare/v0.28.0...v0.29.0
v0.28.0 - 2025-06-19
- Bump zip to 4.0.
- bump v0.27.0 by @tafia in https://github.com/tafia/calamine/pull/499
- fix for zip v2.6 semver violation by @sbruton in https://github.com/tafia/calamine/pull/500
- Bump zip to 4.0 by @prophittcorey in https://github.com/tafia/calamine/pull/506
- @sbruton made their first contribution in https://github.com/tafia/calamine/pull/500
Full Changelog: https://github.com/tafia/calamine/compare/v0.27.0...v0.28.0
v0.27.0 - 2025-04-22
- (xls): add one more
Errorvariant related to formatting.
- Bump dependencies.
- (xls): Invalid formats parsing.
- Always parse string cell as string.
- Pin zip crate to 2.5.
- (xlsx): check 'closing' tag name with more prefixes.
- README.md: (misc) Fix example by @simnalamburt in https://github.com/tafia/calamine/pull/475
- build(deps): bump quick-xml to 0.36 by @PrettyWood in https://github.com/tafia/calamine/pull/473
- fix: always parse a string cell as string by @PrettyWood in https://github.com/tafia/calamine/pull/472
- perf: accelerated datatype conversion by @jqnatividad in https://github.com/tafia/calamine/pull/482
- Bump to quick-xml 0.37 by @jqnatividad in https://github.com/tafia/calamine/pull/477
- Pin zip crate to 2.5.* by @prophittcorey in https://github.com/tafia/calamine/pull/497
- read_string: fix comparison with 'closing' tag name by @falconandy in https://github.com/tafia/calamine/pull/490
- Malformed format by @sftse in https://github.com/tafia/calamine/pull/479
- @simnalamburt made their first contribution in https://github.com/tafia/calamine/pull/475
- @falconandy made their first contribution in https://github.com/tafia/calamine/pull/490
Full Changelog: https://github.com/tafia/calamine/compare/v0.26.1...v0.27.0
v0.26.1 - 2024-10-10
- Sparse cells expect 0 index rows, even when using
header_row.
- fix: header row in the middle can break by @PrettyWood in https://github.com/tafia/calamine/pull/470
Full Changelog: https://github.com/tafia/calamine/compare/v0.26.0...v0.26.1
v0.26.0 - 2024-10-08
- Ability to merge cells from xls and xlsx.
- Options to keep first empty rows for xlsx.
- Support consecutive repeated empty cells for ods.
- New
header_rowconfig.
- Bump MSRV to 1.73.
- Fix broken links in README.
- Enable dates and pictures features in
docs.rsbuild. - Fix broken fuzzer.
- Adding in ability to read merge cells from xls and xlsx files. by @magackame in https://github.com/tafia/calamine/pull/437
- bump zip from 1 to 2 by @jqnatividad in https://github.com/tafia/calamine/pull/439
- chore: make clippy happy by @PrettyWood in https://github.com/tafia/calamine/pull/448
- docs: fixes #436 by @mmorley0395 in https://github.com/tafia/calamine/pull/445
- Evaluate cell name directly instead of trying to be too smart by @tafia in https://github.com/tafia/calamine/pull/449
- add warning and return an empty range if not a worksheet by @tafia in https://github.com/tafia/calamine/pull/450
- feat: add worksheet_range_ref to xlsb, add ReaderRef trait by @dimastbk in https://github.com/tafia/calamine/pull/451
- skip minifat construction if length is zero by @tafia in https://github.com/tafia/calamine/pull/452
- fix broken tests by @sftse in https://github.com/tafia/calamine/pull/457
- docs: enable dates and picture features in docs.rs build by @paolobarbolini in https://github.com/tafia/calamine/pull/458
- fix(ods): support consecutive repeated empty cells by @PrettyWood in https://github.com/tafia/calamine/pull/456
- docs: fix README links to helper functions by @lucatrv in https://github.com/tafia/calamine/pull/461
- Ignore Annotations by @schrieveslaach in https://github.com/tafia/calamine/pull/467
- feat: named table data as
DataReftype by @wdoppenberg in https://github.com/tafia/calamine/pull/464 - feat: add option to set header row by @PrettyWood in https://github.com/tafia/calamine/pull/453
- @magackame made their first contribution in https://github.com/tafia/calamine/pull/437
- @mmorley0395 made their first contribution in https://github.com/tafia/calamine/pull/445
- @paolobarbolini made their first contribution in https://github.com/tafia/calamine/pull/458
- @schrieveslaach made their first contribution in https://github.com/tafia/calamine/pull/467
- @wdoppenberg made their first contribution in https://github.com/tafia/calamine/pull/464
Full Changelog: https://github.com/tafia/calamine/compare/v0.25.0...v0.26.0
v0.25.0 - 2024-05-25
- Add
is_errorandget_errormethods to theDataTypetrait. - Add deserializer helper functions.
- Support getting merged region.
Range::headersmethod.- Expose some
Dimensionsmethods.
- Use
OnceLockinstead ofonce_cellcrate (MSRV: 1.71).
- Use case insensitive comparison when searching for file in xlsx.
- Do not panic when reading cell format with invalid index.
- Issue401 by @tafia in https://github.com/tafia/calamine/pull/402
- bump to 0.24.0 by @tafia in https://github.com/tafia/calamine/pull/403
- feat: added is_error and get_error methods for the DataType trait by @lukapeschke in https://github.com/tafia/calamine/pull/409
- feat: add
with_deserialize_headersmethod for `RangeDeserializerBui… by @lucatrv in https://github.com/tafia/calamine/pull/408 - feat: add deserialize helper functions by @lucatrv in https://github.com/tafia/calamine/pull/406
- feat: add
Range::headersmethod by @lucatrv in https://github.com/tafia/calamine/pull/413 - docs: add note for
Xlsx::worksheet_range_refby @lucatrv in https://github.com/tafia/calamine/pull/414 - feat: Use std::cell::OnceLock instead of the once_cell crate by @softdevca in https://github.com/tafia/calamine/pull/412
- Support to get merged region by @gy0801151351 in https://github.com/tafia/calamine/pull/405
- Use case-insensitive comparison to find a part file in Xlsx ZIP archive by @andy128k in https://github.com/tafia/calamine/pull/419
- Replace
zipwithzip_nextby @Pr0methean in https://github.com/tafia/calamine/pull/423 - Shared formula by @ling7334 in https://github.com/tafia/calamine/pull/425
- Fixes #420 by @jlondonobo in https://github.com/tafia/calamine/pull/421
- Expose dimensions methods to the public by @MichelCarroll in https://github.com/tafia/calamine/pull/428
- Replace zip_next with zip by @Dirreke in https://github.com/tafia/calamine/pull/430
- @gy0801151351 made their first contribution in https://github.com/tafia/calamine/pull/405
- @Pr0methean made their first contribution in https://github.com/tafia/calamine/pull/423
- @ling7334 made their first contribution in https://github.com/tafia/calamine/pull/425
- @jlondonobo made their first contribution in https://github.com/tafia/calamine/pull/421
- @MichelCarroll made their first contribution in https://github.com/tafia/calamine/pull/428
- @Dirreke made their first contribution in https://github.com/tafia/calamine/pull/430
Full Changelog: https://github.com/tafia/calamine/compare/v0.24.0...v0.25.0