0.14.0 (9 December 2020)

This release improves compatibility with different spreadsheet formats, simplifies cell font and formatting APIs, and drops support for Carthage. Additionally, Xcode 11.3 on macOS is now the oldest supported version for building CoreXLSX.

Breaking changes:

Closed issues:

Merged pull requests:

0.13.0 (8 July 2020)

This is a bugfix release with breaking changes that make count property on MergeCells and all properties on Workbook.View optional. Many thanks to @Ethan-Chew and @robgtsoftware for reporting these issues!

Closed issues:

Merged pull requests:

0.12.0 (26 June 2020)

The is a bugfix release with a breaking change, it makes size and font properties optional on the RichText.Properties type to improve compatibility with certain spreadsheets. Thanks to @Ethan-Chew for reporting this in #116.

0.11.1 (12 June 2020)

This is a bugfix release that resolves an issue with parsing cells that contain time values. Thanks to @mb812 for reporting it!

Closed issues:

Merged pull requests:

0.11.0 (30 May 2020)

This is a feature release that enables compatibility with CryptoOffice for decrypting spreadsheets. Additionally, with 0.11.0 you can easily get worksheet names with a new parseWorksheetPathsAndNames function on XLSXFile and get rich text values from cells with a new richStringValue function on Cell.

Due to technical issues, Swift 5.0 CI job for Linux has been removed, so compatibility with Swift 5.0 on Linux can no longer be guaranteed. While CoreXLSX may continue to work with Swift 5.0 on Linux, please update to Swift 5.1 or later to avoid unexpected issues.

Thanks to @kobylyanets and @duodo2412 for their contributions to this release!

New APIs:

Breaking change:

Due to the introduction of the new XLSXFile.init(data:) initializer, the filepath property on XLSXFile no longer makes sense. This property was not used internally in any way and in-memory files don't have any filepaths. If you need to refer to a filepath of an .xlsx file after you've parsed from your filesystem, you should retain it manually and process it separately as you see fit.

Closed issues:

Merged pull requests:

0.10.0 (6 April 2020)

This is a release with bugfixes and a few improvements to usability of the spreadsheet cell values API. Thanks to all contributors and users, you provide an invaluable amount of feedback and help!

New API:

The library now provides a simplified API to fetch string and date values from cells, which is much easier to use than the previous version (which is still available).

Here's how you can get all strings (including shared strings) in column "C" for example:

let sharedStrings = try file.parseSharedStrings()
let columnCStrings = worksheet.cells(atColumns: [ColumnReference("C")!])
  .compactMap { $0.stringValue(sharedStrings) }

To parse a date value from a cell, use dateValue property on the Cell type:

let columnCDates = worksheet.cells(atColumns: [ColumnReference("C")!])
  .compactMap { $0.dateValue }

Breaking change:

The type property on Cell is no longer of String type. It was previously used to check if cell's type is equal to "s", which denoted a shared string. You should use enum values for that since this release, which for shared strings now is (unsurprisingly) .sharedString.

Closed issues:

Merged pull requests:

0.9.1 (8 November 2019)

This release adds a new value to the Relationship.SchemaType enum, which fixes compatibility with some spreadsheet files. Thanks to @mxcl for the bug report!

Fixed bugs:

Merged pull requests:

0.9.0 (19 October 2019)

This release adds Linux support and improves compatibility with .xlsx files that contain shared strings. Thanks to @CloseServer, @funnel20 and @LiewLi for bug reports and contributions!

Implemented enhancements:

Fixed bugs:

Closed issues:

Merged pull requests:

0.8.0 (12 July 2019)

Feature and bugfix release that makes the library compatible with more spreadsheet types. It also adds support for Comments structure, which can be parsed with the new parseComments API.

Many thanks to @grin, @GoldenJoe and @LiewLi for reporting and fixing issues in this release.

Closed issues:

Merged pull requests:

0.7.0 (25 May 2019)

Bugfix release that improves compatibility with different spreadsheet types.

Thanks to @grin for reporting and fixing issues in this release.

Breaking changes:

All properties on struct Format except fontId and numberFormatId are now optional.

Additions:

New borderId and fillId properties on struct Format.

Fixed bugs:

Merged pull requests:

0.6.1 (9 May 2019)

Bugfix release that adds case externalLink to Relationship.SchemaType improving .xlsx compatibility.

0.6.0 (2 May 2019)

This is a bugfix release with changes to the model API that improve compatibility with files containing formulas and varied shared string formats.

Specifically:

Closed issues:

Merged pull requests:

0.5.0 (18 April 2019)

This is a release with API additions and bug fixes.

This release of CoreXLSX can be integrated as a Swift 5 module if you're using Xcode 10.2, but support for Swift 4.2 and earlier Xcode 10 versions is also maintained.

Compatibility is improved for big files and files that internally contain namespaced XML. A few other previously reported compatibility issues are now fixed. Many thanks to everyone who reported the issues, the improvements in this release wouldn't be possible without your contribution!

Breaking changes:

Several properties on the model types became optional when there's no guarantee they are always available in files generated by different apps and tools.

Additions:

Now you can parse style information from the archive with the new parseStyles() function. Please refer to the Styles model for more details. Please note that not all XLSX files contain style information, so you should be prepared to handle the errors thrown from parseStyles() function in that case.

Merged pull requests:

0.4.0 (7 February 2019)

This is a release with API improvements and bug fixes. A big thank you to everyone who provided bug reports and contributions that made this release possible!

Breaking changes:

Additions:

Bugfixes:

Some files that couldn't be previously parsed should now be handled better thanks to fixes in optionality and more properties added to the model types.

All changes:

0.3.0 (13 November 2018)

0.2.3 (12 November 2018)

0.2.2 (11 November 2018)

0.2.1 (11 November 2018)

0.2.0 (11 November 2018)

0.1.2 (10 November 2018)

0.1.1 (10 November 2018)

0.1.0 (10 November 2018)