PackageTrack
Sign in Get early access

calamine

An Excel/OpenDocument Spreadsheet reader and deserializer in pure Rust

0.36.1 11M downloads/mo #2885 most downloaded on crates.io tafia/calamine

What this package is like to depend on

Last release 27 days ago

27 Jul 2026

Ships fairly regularly

a new release about every 4 weeks

Nearly every release is documented

notes for 82 of 82 stable releases

Nothing withdrawn

no release was ever pulled

10 years old

82 releases · first in 2016

8 releases in the last 12 months

see the full history below

Release timeline

82 releases · Nov 2016 to Jul 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 82
  1. 0.36.1 27 Jul 2026
    Release notes

    Fixed

    • Fixed a regression in 0.36.0 that broke Strict OOXML (ISO/IEC 29500)
      _rels/.rels links.

    • Fixed XLS string handling to preserve empty strings instead of discarding
      them. PR #679.

    • Fixed XLSB workbook parsing to consume the body of unhandled workbook-global
      records. A leftover body was misread as the next record id, which either
      silently dropped the worksheet or panicked from an empty buffer. PR #675.

    What's Changed

    New Contributors

    Full Changelog: v0.36.0...v0.36.1

    Open source →
    Release notes

    Fixed

    • Fixed a regression in 0.36.0 that broke Strict OOXML (ISO/IEC 29500) _rels/.rels links.

    • Fixed XLS string handling to preserve empty strings instead of discarding them. PR #679.

    • Fixed XLSB workbook parsing to consume the body of unhandled workbook-global records. A leftover body was misread as the next record id, which either silently dropped the worksheet or panicked from an empty buffer. PR #675.

    Open source →
  2. 0.36.0 06 Jul 2026
    Release notes

    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

    Open source →
    Release notes

    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.

    Open source →
  3. 0.35.0 10 May 2026
    Release notes

    Added

    • Added has_1904_epoch() method to Xls/Xlsx/Xlsb structs to allow the user to
      determine which date epoch is in use by Excel. PR #630.

    • Made RowDeserializer public to allow a custom DeserializeSeed.
      PR #635.

    Changed

    • Added deserialization examples. PR #649.

    • Performance improvements:

      • Optimized <v> cell value parsing. PR #622
      • Optimized cell reference parsing. PR #623

    Fixed

    • Fixed issue with redundant <v> value in inlineStr XLSX cells. Issue #633.

    • Fixed issue when processing XLSX files to ignore namespace prefix when reading
      relation ids. Previously accepted only r: and relationships: prefixes.
      Issue #634.

    • Fixed XLSX issue where rich text <r> elements were ignored after initial
      plain <t> elements. Issue #636.

    • Fixed XLS issue where date format was ignored for formula values.
      Issue #640.

    • Fixed XLSX shared formula expansion corrupting function names. The
      replace_cell_names() function treated LOG10 as a cell reference (column
      LOG, row 10). Issue #644.

    • Fixed XLSX inlineStr issue for elements that contain CDATA. Issue #648.

    • Fixed panic when parsing formulas in XLS BIFF5 workbooks.The parse_formula
      function decoded the non-3D PtgRef, PtgArea, PtgRefErr, and PtgAreaErr tokens
      assuming BIFF8 sizes. PR #643.

    • Fixed XLS panic with unsupported formula functions. Handle unsupported XLS
      function ids as formula parse errors instead of indexing past the function
      table. Issue #646.

    What's Changed

    New Contributors

    Full Changelog: v0.34.0...v0.35.0

    Open source →
    Release notes

    Added

    • Added has_1904_epoch() method to Xls/Xlsx/Xlsb structs to allow the user to determine which date epoch is in use by Excel. PR #630.

    • Made RowDeserializer public to allow a custom DeserializeSeed. PR #635.

    Changed

    • Added deserialization examples. PR #649.

    • Performance improvements:

      • Optimized <v> cell value parsing. PR #622
      • Optimized cell reference parsing. PR #623

    Fixed

    • Fixed issue with redundant <v> value in inlineStr XLSX cells. Issue #633.

    • Fixed issue when processing XLSX files to ignore namespace prefix when reading relation ids. Previously accepted only r: and relationships: prefixes. Issue #634.

    • Fixed XLSX issue where rich text <r> elements were ignored after initial plain <t> elements. Issue #636.

    • Fixed XLS issue where date format was ignored for formula values. Issue #640.

    • Fixed XLSX shared formula expansion corrupting function names. The replace_cell_names() function treated LOG10 as a cell reference (column LOG, row 10). Issue #644.

    • Fixed XLSX inlineStr issue for elements that contain CDATA. Issue #648.

    • Fixed panic when parsing formulas in XLS BIFF5 workbooks.The parse_formula function decoded the non-3D PtgRef, PtgArea, PtgRefErr, and PtgAreaErr tokens assuming BIFF8 sizes. PR #643.

    • Fixed XLS panic with unsupported formula functions. Handle unsupported XLS function ids as formula parse errors instead of indexing past the function table. Issue #646.

    Open source →
  4. 0.34.0 07 Mar 2026
    Release notes

    Changed

    • Updated benchmarking to uses the criterion.rs crate. This removed the
      requirement for using +nightly for cargo bench. PR #620.

    • Updated dependencies for release 0.34.0:

    • Refactored CFB to resolve special case in the caller of fn get_chain.
      PR #615.

    • Performance improvements:

      • Cell reader buffer reuse and optimised maps. PR #611
      • Optimised XLS sector chain reads. PR #609
      • Ensured fast_float2 is used at all float-parsing call sites. PR #608
      • Cached path and attr lookups, reused buffers, minimised allocations. PR #606

    Fixed

    • Fixed capitalized workbook/book stream handling in XLS files. PR #618.

    • Fixed issue where BIFF5 Lbl and ExternSheet records were incorrectly
      parsed as BIFF8. PR #613.

    • Fixed VBA check_variable_record to handle optional records. PR #614.

    • Fixed premature error when BIFF version is not Biff8 in XLS files. PR #619.

    • Fixed issue where XLSX cells with an empty <v/> value returned a string with
      index 0 instead of an Empty value. Issue #607.

    • Fixed millisecond rounding issue where 1000 milliseconds weren't rounded up to
      the next second. Issue #602, PR #605.

    What's Changed

    New Contributors

    Full Changelog: v0.33.0...v0.34.0

    Open source →
    Release notes

    Changed

    • Updated benchmarking to uses the criterion.rs crate. This removed the requirement for using +nightly for cargo bench. PR #620.

    • Updated dependencies for release 0.34.0:

    • Refactored CFB to resolve special case in the caller of fn get_chain. PR #615.

    • Performance improvements:

      • Cell reader buffer reuse and optimized maps. PR #611
      • Optimized XLS sector chain reads. PR #609
      • Ensured fast_float2 is used at all float-parsing call sites. PR #608
      • Cached path and attr lookups, reused buffers, minimized allocations. PR #606

    Fixed

    • Fixed capitalized workbook/book stream handling in XLS files. PR #618.

    • Fixed issue where BIFF5 Lbl and ExternSheet records were incorrectly parsed as BIFF8. PR #613.

    • Fixed VBA check_variable_record to handle optional records. PR #614.

    • Fixed premature error when BIFF version is not Biff8 in XLS files. PR #619.

    • Fixed issue where XLSX cells with an empty <v/> value returned a string with index 0 instead of an Empty value. Issue #607.

    • Fixed millisecond rounding issue where 1000 milliseconds weren't rounded up to the next second. Issue #602, PR #605.

    Open source →
  5. 0.33.0 04 Feb 2026
    Release notes

    Added

    • Added support for reading data from Pivot Tables, which involves reading data
      from the internal Pivot Cache. PR #559.

    Changed

    • Update dependencies for release 0.33.0:

      • zip: 4.2.0 -> 7.0.
      • atoi_simd: 0.16 -> 0.17

    Fixed

    • Fixed potential memory exhaustion issue in ODS files that could be triggered
      via repeated empty rows/columns.

      The fix adds limits to prevent memory exhaustion from malicious ODS files that
      declare billions of repeated cells via table:number-rows-repeated and
      table:number-columns-repeated attributes.

      The change adds the following protection layers:

      • Add cap for columns per row at MAX_COLUMNS (16,384).
      • Add cap for total row repeats at MAX_ROWS (1,048,576).
      • Add cap for total cells at MAX_CELLS (100 million) in get_range().

      These limits match XLSX's existing row/column limits and prevent a 7KB
      malicious file from attempting to allocate memory for 17+ billion cells.

      When MAX_CELLS is exceeded, return OdsError::CellLimitExceeded instead
      of silently returning an empty range. This ensures callers are properly
      informed of truncation rather than receiving silent data loss.

      Issue #594, PR #596.

    • Fixed an issue where XLSX files with tables that had the internal insertRow
      attribute set returned a Dimensions object where the end row was less than
      the start row. This caused an assert/panic when trying to create a Range
      object to return the table range. Issue #589.

    • Fixed an issue with XLSX files where worksheet tables used the unusual, but
      valid, absolute reference system like "/xl/tables/table1.xml" instead of the
      common Excel generated relative system "../tables/table1.xml". Issue #587.

    What's Changed

    New Contributors

    Full Changelog: v0.32.0...v0.33.0

    Open source →
    Release notes

    Added

    • Added support for reading data from Pivot Tables, which involves reading data from the internal Pivot Cache. PR #559.

    Changed

    • Update dependencies for release 0.33.0:

      • zip: 4.2.0 -> 7.0.
      • atoi_simd: 0.16 -> 0.17

    Fixed

    • Fixed potential memory exhaustion issue in ODS files that could be triggered via repeated empty rows/columns.

      The fix adds limits to prevent memory exhaustion from malicious ODS files that declare billions of repeated cells via table:number-rows-repeated and table:number-columns-repeated attributes.

      The change adds the following protection layers:

      • Add cap for columns per row at MAX_COLUMNS (16,384).
      • Add cap for total row repeats at MAX_ROWS (1,048,576).
      • Add cap for total cells at MAX_CELLS (100 million) in get_range().

      These limits match XLSX's existing row/column limits and prevent a 7KB malicious file from attempting to allocate memory for 17+ billion cells.

      When MAX_CELLS is exceeded, return OdsError::CellLimitExceeded instead of silently returning an empty range. This ensures callers are properly informed of truncation rather than receiving silent data loss.

      Issue #594, PR #596.

    • Fixed an issue where XLSX files with tables that had the internal insertRow attribute set returned a Dimensions object where the end row was less than the start row. This caused an assert/panic when trying to create a Range object to return the table range. Issue #589.

    • Fixed an issue with XLSX files where worksheet tables used the unusual, but valid, absolute reference system like "/xl/tables/table1.xml" instead of the common Excel generated relative system "../tables/table1.xml". Issue #587.

    Open source →
  6. 0.32.0 20 Nov 2025
    Release notes

    Changed

    • Refactored VBA reading functions to be on-demand for better performance.

    • Simplified vba_project() function return type from Option<Result<T>> to
      Result<Option<T>> for more idiomatic error handling. This is a breaking
      change.

    Fixed

    • 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 XLUnicodeRichExtendedString records without reserved
      tags.

    • Fixed various edge cases in XLS handling that could lead to parsing errors.

    What's Changed

    New Contributors

    Full Changelog: v0.31.0...v0.32.0

    Open source →
    Release notes

    Changed

    • Refactored VBA reading functions to be on-demand for better performance.

    • Simplified vba_project() function return type from Option<Result<T>> to Result<Option<T>> for more idiomatic error handling. This is a breaking change.

    Fixed

    • 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 XLUnicodeRichExtendedString records without reserved tags.

    • Fixed various edge cases in XLS handling that could lead to parsing errors.

    Open source →
  7. 0.31.0 27 Sep 2025
    Release notes

    Changed

    • Upgraded quick-xml to v0.38. This was a significant change in quick-xml
      relative to v0.37 and required changes in calamine to entity handling. It
      also fixes EOL handling which may lead to regressions in calamine
      applications 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

    • Added a conversion function to ExcelDateTime to convert the inner serial
      Excel datetime to standard year, month, date, hour, minute, second and
      millisecond components. Works for 1900 and 1904 epochs.

    Fixed

    • 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.

    What's Changed

    New Contributors

    Full Changelog: v0.30.1...v0.31.0

    Open source →
    Release notes

    Changed

    • Upgraded quick-xml to v0.38. This was a significant change in quick-xml relative to v0.37 and required changes in calamine to entity handling. It also fixes EOL handling which may lead to regressions in calamine applications 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

    • Added a conversion function to ExcelDateTime to convert the inner serial Excel datetime to standard year, month, date, hour, minute, second and millisecond components. Works for 1900 and 1904 epochs.

    Fixed

    • 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.

    Open source →
  8. 0.30.1 06 Sep 2025
    Release notes

    Added

    • Added Debug and Clone to Table for easier debugging. PR #547.

    Fixed

    • Fixed issue Issue #548 for xls files where the SST record had an incorrect
      number of unique strings.

    What's Changed

    Full Changelog: v0.30.0...v0.30.1

    Open source →
    Release notes

    Added

    • Added Debug and Clone to Table for easier debugging. PR #547.

    Fixed

    • Fixed issue Issue #548 for xls files where the SST record had an incorrect number of unique strings.

    Open source →
  9. 0.30.0 07 Aug 2025
    Release notes

    Changed

    • Unpinned the zip.rs dependency 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.rs compatibility in previous releases).

      See the discussion at Issue #527.

    What's Changed

    • small language changes to README.md by @mhogervo in #537
    • Fix typos and add typos GH Actions workflow to prevent future typos by @jqnatividad in #539
    • unpin zip and using MSRV-aware in CI by @Dirreke in #542

    New Contributors

    Full Changelog: v0.29.0...v0.30.0

    Open source →
    Release notes

    Changed

    • Unpinned the zip.rs dependency 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.rs compatibility in previous releases).

      See the discussion at Issue #527.

    Open source →
  10. 0.29.0 17 Jul 2025
    Release notes

    Added

    • Add additional documentation and examples for the Range, Cell, XlsxError
      and Table structs, and Xlsx Table and Merge methods. Issue #459

    Changed

    • 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 pins zip.rs to v4.2.0 to allow users to maintain a MSRV of
      v1.73.0 for at least one more release. It is likely that calamine v0.30.0 or
      later will move back to the latest zip.rs v4.x and require rustc v1.85.0.

    Fixed

    • 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
      associated Range of cells would be in row-column order. PR #524.

    What's Changed

    New Contributors

    Full Changelog: v0.28.0...v0.29.0

    Open source →
    Release notes

    Added

    • Add additional documentation and examples for the Range, Cell, XlsxError and Table structs, and Xlsx Table and Merge methods. Issue #459

    Changed

    • 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 pins zip.rs to v4.2.0 to allow users to maintain a MSRV of v1.73.0 for at least one more release. It is likely that calamine v0.30.0 or later will move back to the latest zip.rs v4.x and require rustc v1.85.0.

    Fixed

    • 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 associated Range of cells would be in row-column order. PR #524.
    Open source →
  11. 0.28.0 19 Jun 2025
    Release notes

    Changed

    • Bump zip to 4.0.
    Open source →
  12. 0.27.0 22 Apr 2025
    Release notes

    Added

    • (xls): add one more Error variant related to formatting.

    Changed

    • 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.
    Open source →
  13. 0.26.1 10 Oct 2024
    Release notes

    Fixed

    • Sparse cells expect 0 index rows, even when using header_row.
    Open source →
  14. 0.26.0 08 Oct 2024
    Release notes

    Added

    • 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_row config.

    Changed

    • Bump MSRV to 1.73.
    • Fix broken links in README.
    • Enable dates and pictures features in docs.rs build.
    • Fix broken fuzzer.
    Open source →
  15. 0.25.0 24 May 2024
    Release notes

    Added

    • Add is_error and get_error methods to the DataType trait.
    • Add deserializer helper functions.
    • Support getting merged region.
    • Range::headers method.
    • Expose some Dimensions methods.

    Changed

    • Use OnceLock instead of once_cell crate (MSRV: 1.71).

    Fixed

    • Use case insensitive comparison when searching for file in xlsx.
    • Do not panic when reading cell format with invalid index.
    Open source →
  16. 0.24.0 08 Feb 2024
    Release notes

    Added

    • Introduce a DataType trait implemented by both Data and DataRef.
    • Data and DataType now return Some(0{.0}) and Some(1{.0}) rather than None when .as_i64 or .as_f64 is used on a Bool value.
    • Detect xlsb/ods password protected files.
    • Introduce is_x methods for date and time variants.

    Changed

    • BREAKING: rename DataType enum to Data and DataTypeRef to DataRef.
    • DateTime(f64) to DateTime(ExcelDateTime).

    Fixed

    • Getting tables names from xlsx workbooks without _rels files.
    Open source →
  17. 0.23.1 19 Dec 2023
    Release notes

    Fixed

    • worksheet_formula not returning all formula.
    Open source →
  18. 0.23.0 12 Dec 2023
    Release notes

    Added

    • New DataTypeRef available from worksheet_range_ref to reduce memory usage.
    • Detect if workbook is password protected.

    Changed

    • Add benchmark plot.

    Fixed

    • Truncated text in xls.
    Open source →
  19. 0.22.1 08 Oct 2023
    Release notes

    Added

    • Support label cells for xls.

    Changed

    • Update GitHub actions.
    • Clippy.
    • Preallocate several buffers.

    Fixed

    • Regression on Range::get.
    • Spelling of formula error type.
    Open source →
  20. 0.22.0 04 Sep 2023
    Release notes

    Added

    • Add support of sheet type and visibility.
    • Implement blank string handling.

    Changed

    • Improve de_opt_f64 example.
    • Remove datetime notice from README.
    • Clippy.
    • Bump MSRV to 1.63 (breaking).
    • Set edition to 2021.
    Open source →
  21. 0.21.2 25 Jun 2023
    Release notes

    Fixed

    • Formula with string not displaying properly.
    Open source →
  22. 0.21.1 16 Jun 2023
    Release notes

    Changed

    • Bump MSRV to 1.60.0 due to log dependencies.

    Fixed

    • Xls: formula values ignored.
    • Xls: formula (string) not displayed properly.
    Open source →
  23. 0.21.0 13 Jun 2023
    Release notes

    Added

    • Support for duration.

    Changed

    • Add MSRV.

    Fixed

    • (xlsx) support r attribute.
    • Support PROJECTCOMPATVERSION in vba.
    • Incorrect date parsing due to excel bug.
    Open source →
  24. 0.20.0 29 May 2023
    Release notes

    Added

    • (all) parse format/style information to infer cell as datetime.
    • (ods) support number-columns-repeated attribute.

    Changed

    • Bump dependencies.
    • Multiple clippy refactorings.
    Open source →
  25. 0.19.1 20 Oct 2022
    Release notes

    Fixed

    • Wrong range len calculation.
    • Date precision.
    Open source →
  26. 0.19.0 19 Oct 2022
    Release notes

    Added

    • Always return sheet names in lexicographic order (BTreeMap).

    Changed

    • Bump dependencies (quick-xml in particular and chrono).
    • Remove travis.

    Fixed

    • Several decoding issues in xls and xlsb.
    • Wrong decimal parsing.
    Open source →
  27. 0.18.0 23 Feb 2021
    Release notes

    Added

    • Improve conversions from raw data to primitives.
    • Replace macro matches! by match expression to reduce MSRV.

    Changed

    • Fix two typos in README.

    Fixed

    • Allow empty value cells in xlsx.
    • Obscure xls parsing errors (#195).
    Open source →
  28. 0.17.0 03 Feb 2021
    Release notes

    Added

    • Use chunks_exact instead of chunks where possible.
    • Detect date/time formatted cells in XLSX.
    • Brute force file detection if extension is not known.
    • Support xlsx sheet sizes beyond u32::MAX.

    Changed

    • Add regression tests that fail with miri.
    • Ensure doctest functions actually run.
    • Run cargo fmt to fix travis tests.

    Fixed

    • Make to_u32, read_slice safe and sound.
    • Security issue #199.
    • Fix Float reading for XLSB.
    Open source →
  29. 0.16.2 26 Sep 2020
    Release notes

    Changed

    • Add deserialize_with example in README.
    • Correct MBSC to MBCS in vba.rs (misspelled before).
    • Use 2018 edition paths.

    Fixed

    • Skip phonetic run.
    • Fix XLS float parsing error.
    • Add the ability to read formula values from XLSB.
    • Support integral date types.
    Open source →
  30. 0.16.1 20 Nov 2019
    Release notes

    Added

    • Make Metadata.sheets (and Reader.sheet_names) always return names in workbook order.

    Changed

    • Fix warnings in tests.
    Open source →
  31. 0.16.0 15 Oct 2019
    Release notes

    Added

    • Deprecate failure and impl std::error::Error for all errors.
    • Add dates feature to enrich DataType with date conversions functions.
    Open source →
  32. 0.15.6 24 Aug 2019
    Release notes

    Added

    • Update dependencies.
    Open source →
  33. 0.15.5 15 Jul 2019
    Release notes

    Fixed

    • Wrong bound comparisons.
    Open source →
  34. 0.15.4 11 Apr 2019
    Release notes

    Added

    • Improve deserializer.
    • Bump dependencies.
    Open source →
  35. 0.15.3 14 Dec 2018
    Release notes

    Added

    • Add several new convenient fn to DataType.
    • Add a Range::range fn to get sub-ranges.
    • Add a new Range::cells iterator.
    • Implement DoubleEndedIterator when possible.
    • Add a Range::get fn (similar to slice's).

    Changed

    • Add some missing size_hint impl in iterators.
    • Add some ExactSizeIterator.
    Open source →
  36. 0.15.2 14 Dec 2018
    Release notes

    Added

    • Consider empty cell as empty str if deserializing to str or String.
    Open source →
  37. 0.15.1 13 Dec 2018
    Release notes

    Fixed

    • Xls - allow sectors ending after eof (truncate them!).
    Open source →
  38. 0.15.0 13 Dec 2018
    Release notes

    Added

    • Codepage/encoding_rs for codepage mapping.
    Open source →
  39. 0.14.10 23 Nov 2018
    Release notes

    Fixed

    • Serde map do not stop at first empty value.
    Open source →
  40. 0.14.9 23 Nov 2018
    Release notes

    Fixed

    • Do not return map keys for empty cells. Fixes not working #[serde(default)].
    Open source →
  41. 0.14.8 23 Nov 2018
    Release notes

    Added

    • Bump dependencies.
    • Add a RangeDeserializerBuilder::with_headers fn to improve serde deserializer.
    Open source →
  42. 0.14.7 23 Oct 2018
    Release notes

    Added

    • Ods, support text:s and text:p.
    Open source →
  43. 0.14.6 20 Sep 2018
    Release notes

    Fixed

    • Support MulRk for xls files.
    Open source →
  44. 0.14.5 28 Aug 2018
    Release notes

    Changed

    • Bump dependencies.

    Fixed

    • Properly parse richtext ods files.
    Open source →
  45. 0.14.4 28 Aug 2018
    Release notes

    Added

    • Ods: display sheet names in order.
    Open source →
  46. 0.14.3 09 Aug 2018
    Release notes

    Added

    • Handle 'covered cells' which are behind merge-cells in ODS.
    Open source →
  47. 0.14.2 03 Aug 2018
    Release notes

    Changed

    • Bump dependencies.

    Fixed

    • Boolean detection and missing repeated cells in ODS.
    Open source →
  48. 0.14.1 08 May 2018
    Release notes

    Fixed

    • Possibility of index out of bound in get_value and eventually in Index<(usize, usize)>.
    Open source →
  49. 0.14.0 27 Apr 2018
    Release notes

    Added

    • Have Range start/end return None if the range is actually empty.
    • Have Range::get_value return an Option if the index is out of range.
    Open source →
  50. 0.13.1 23 Mar 2018
    Release notes

    Added

    • Make Range::from_sparse public.

    Changed

    • Bump dependencies.
    Open source →
  51. 0.13.0 27 Jan 2018
    Release notes

    Added

    • Migrate from error-chain to failure.
    • More documentation on error.
    • Bump dependencies (calamine, encoding_rs and zip).
    • Process any Read not only Files.

    Changed

    • Simplify Reader trait (enable direct Xlsx read etc ...).
    • Always initialize at creation.
    • Fix various typos.
    Open source →
  52. 0.12.1 27 Nov 2017
    Release notes

    Added

    • Update dependencies.
    Open source →
  53. 0.12.0 27 Oct 2017
    Release notes

    Added

    • Add serde deserialization.
    Open source →
  54. 0.11.8 22 Aug 2017
    Release notes

    Changed

    • Update dependencies, in particular quick-xml 0.9.1.
    Open source →
  55. 0.11.7 08 Jul 2017
    Release notes

    Changed

    • Bump dependencies.

    Fixed

    • Add a bound check when decoding cfb.
    Open source →
  56. 0.11.6 05 Jul 2017
    Release notes

    Changed

    • Bump dependencies.
    • Ignore .bk files.
    Open source →
  57. 0.11.5 12 May 2017
    Release notes

    Changed

    • Bump dependencies.
    Open source →
  58. 0.11.4 08 May 2017
    Release notes

    Changed

    • Update to quick-xml 0.7.3 and encoding_rs 0.6.6.
    Open source →
  59. 0.11.3 05 May 2017
    Release notes

    Added

    • Implement Display for DataType and CellTypeError.
    • Add a CellType alias trait.
    Open source →
  60. 0.11.2 04 May 2017
    Release notes

    Changed

    • Update to quick-xml 0.7.1.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive