1+ # 0.11.0 (30 May 2020)
2+
3+ This is a feature release that enables compatibility with [ CryptoOffice] ( https://github.com/CoreOffice/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 ` .
4+
5+ 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.
6+
7+ Thanks to [ @kobylyanets ] ( https://github.com/kobylyanets ) and
8+ [ @duodo2412 ] ( https://github.com/duodo2412 ) for their contributions to this release!
9+
10+ ** New APIs:**
11+
12+ - ` XLSXFile ` now provides a new initializer that takes an argument of ` Data ` type. This allows opening in-memory documents, the primary example being spreadsheets decrypted with [ CryptoOffice] ( https://github.com/CoreOffice/CryptoOffice ) .
13+
14+ - ` XLSXFile ` now has a new ` parseWorksheetPathsAndNames ` function that returns an array of
15+ worksheet names and their paths in a given workbook, while previously you had to use
16+ ` parseWorksheetPaths ` and match paths manually with results of the ` parseWorkbooks ` function.
17+
18+ - ` Cell ` now has a ` richStringValue ` function that takes a result of
19+ ` XLSXFile.parseSharedStrings ` function and produces an array of ` RichText ` values. This
20+ makes it easier to query rich text content from cells, while previously you had to match
21+ cell values against ` SharedStrings ` manually.
22+
23+ ** Breaking change:**
24+
25+ Due to the introduction of the new ` XLSXFile.init(data:) ` initializer, the ` filepath `
26+ property on ` XLSXFile ` no longer makes sense. This property was not used internally
27+ in any way and in-memory files don't have any filepaths. If you need to refer to a
28+ filepath of an ` .xlsx ` file after you've parsed from your filesystem, you should
29+ retain it manually and process it separately as you see fit.
30+
31+ ** Closed issues:**
32+
33+ - API for matching sheet names to sheet paths ([ #105 ] ( https://github.com/CoreOffice/CoreXLSX/issues/105 ) )
34+
35+ ** Merged pull requests:**
36+
37+ - Bump XMLCoder dependency to 0.11.1 ([ #112 ] ( https://github.com/CoreOffice/CoreXLSX/pull/112 ) ) via [ @MaxDesiatov ] ( https://github.com/MaxDesiatov )
38+ - Add data XLSXFile.init, remove filepath property ([ #111 ] ( https://github.com/CoreOffice/CoreXLSX/pull/111 ) ) via [ @MaxDesiatov ] ( https://github.com/MaxDesiatov )
39+ - Add func parseWorksheetPathsAndNames on XLSXFile ([ #109 ] ( https://github.com/CoreOffice/CoreXLSX/pull/109 ) ) via [ @MaxDesiatov ] ( https://github.com/MaxDesiatov )
40+ - Drop support for Swift 5.0 on Linux ([ #110 ] ( https://github.com/CoreOffice/CoreXLSX/pull/110 ) ) via [ @MaxDesiatov ] ( https://github.com/MaxDesiatov )
41+ - Add ability to get cell value as RichText ([ #106 ] ( https://github.com/CoreOffice/CoreXLSX/pull/106 ) ) via [ @kobylyanets ] ( https://github.com/kobylyanets )
42+
143# 0.10.0 (6 April 2020)
244
345This is a release with bugfixes and a few improvements to usability of
@@ -64,7 +106,7 @@ compatibility with some spreadsheet files. Thanks to
64106** Fixed bugs:**
65107
66108- Cannot initialize SchemaType from invalid String value
67- [ \# 87] ( https://github.com/MaxDesiatov/CoreXLSX/issues/87 )
109+ [ \# 87] ( https://github.com/MaxDesiatov/CoreXLSX/issues/87 )
68110
69111** Merged pull requests:**
70112
@@ -188,11 +230,11 @@ compatibility with files containing formulas and varied shared string formats.
188230
189231Specifically:
190232
191- * new ` struct Formula ` added with a corresponding property on ` struct Cell `
192- * property ` color ` on ` struct Properties ` became optional
193- * ` properties ` on ` struct RichText ` became optional
194- * new ` chartsheet ` case added to ` enum Relationship `
195- * ` richText ` on ` struct SharedStrings ` became an array, not optional
233+ - new ` struct Formula ` added with a corresponding property on ` struct Cell `
234+ - property ` color ` on ` struct Properties ` became optional
235+ - ` properties ` on ` struct RichText ` became optional
236+ - new ` chartsheet ` case added to ` enum Relationship `
237+ - ` richText ` on ` struct SharedStrings ` became an array, not optional
196238
197239** Closed issues:**
198240
@@ -260,42 +302,42 @@ who provided bug reports and contributions that made this release possible!
260302
261303** Breaking changes:**
262304
263- * A few properties on the model types were added with cleaner names and better
264- fitting types. Most of the old versions of those properties were kept as
265- deprecated, but you might get some breakage with optionality, where we
266- couldn't find a good deprecation path.
305+ - A few properties on the model types were added with cleaner names and better
306+ fitting types. Most of the old versions of those properties were kept as
307+ deprecated, but you might get some breakage with optionality, where we
308+ couldn't find a good deprecation path.
267309
268310** Additions:**
269311
270- * New ` parseSharedStrings ` function on ` XLSXFile ` allows you get values of
271- cells with shared string value. Quite frequently those strings are
272- unavailable and are only referenced in the original model types you get with
273- ` parseWorksheet ` .
274-
275- * Previously when addressing cells and columns you had to use a stringly-typed
276- API. It was also not very convenient for specifying a range of columns. This
277- is now fixed with the new type-safe [ ` ColumnReference `
278- struct] ( https://github.com/MaxDesiatov/CoreXLSX/blob/cf0c7f44e8bf80fdd60fa12b3aa27a15cc79ef86/Tests/CoreXLSXTests/CellReference.swift#L61 ) ,
279- which conforms to ` Comparable ` and ` Strideable ` .
280-
281- * Following the addition of [ an error context to
282- ` XMLCoder ` ] ( https://github.com/MaxDesiatov/XMLCoder/pull/46 ) , which is the main
283- dependency of ` CoreXLSX ` , it is now exposed on ` struct XLSXFile ` . Pass a
284- non-zero value to ` errorContextLength ` argument (default is ` 0 ` ) of ` XLSXFile `
285- initializer and you'll get a snippet of XML that failed to parse in the debug
286- description of the error value.
287-
288- * Additional optional argument ` bufferSize ` was added to ` XLSXFile ` initializer as
289- a response to [ previous
290- reports] ( https://github.com/MaxDesiatov/CoreXLSX/issues/27 ) about problems [ with
291- zip file extraction] ( https://github.com/MaxDesiatov/CoreXLSX/issues/26 ) . The
292- default value is 10 MiB, which seems to be enough in most cases, but you can
293- still try passing a larger value for bigger files if you see that an XML file
294- stops abruptly in the middle of the file. Unfortunately, we haven't found a good
295- way to adjust this value dynamically based on the file size, but a sufficiently
296- large value should work for all files, which is the default.
297-
298- * Support for Carthage was added as well as support for tvOS and watchOS.
312+ - New ` parseSharedStrings ` function on ` XLSXFile ` allows you get values of
313+ cells with shared string value. Quite frequently those strings are
314+ unavailable and are only referenced in the original model types you get with
315+ ` parseWorksheet ` .
316+
317+ - Previously when addressing cells and columns you had to use a stringly-typed
318+ API. It was also not very convenient for specifying a range of columns. This
319+ is now fixed with the new type-safe [ ` ColumnReference `
320+ struct] ( https://github.com/MaxDesiatov/CoreXLSX/blob/cf0c7f44e8bf80fdd60fa12b3aa27a15cc79ef86/Tests/CoreXLSXTests/CellReference.swift#L61 ) ,
321+ which conforms to ` Comparable ` and ` Strideable ` .
322+
323+ - Following the addition of [ an error context to
324+ ` XMLCoder ` ] ( https://github.com/MaxDesiatov/XMLCoder/pull/46 ) , which is the main
325+ dependency of ` CoreXLSX ` , it is now exposed on ` struct XLSXFile ` . Pass a
326+ non-zero value to ` errorContextLength ` argument (default is ` 0 ` ) of ` XLSXFile `
327+ initializer and you'll get a snippet of XML that failed to parse in the debug
328+ description of the error value.
329+
330+ - Additional optional argument ` bufferSize ` was added to ` XLSXFile ` initializer as
331+ a response to [ previous
332+ reports] ( https://github.com/MaxDesiatov/CoreXLSX/issues/27 ) about problems [ with
333+ zip file extraction] ( https://github.com/MaxDesiatov/CoreXLSX/issues/26 ) . The
334+ default value is 10 MiB, which seems to be enough in most cases, but you can
335+ still try passing a larger value for bigger files if you see that an XML file
336+ stops abruptly in the middle of the file. Unfortunately, we haven't found a good
337+ way to adjust this value dynamically based on the file size, but a sufficiently
338+ large value should work for all files, which is the default.
339+
340+ - Support for Carthage was added as well as support for tvOS and watchOS.
299341
300342** Bugfixes:**
301343
@@ -304,106 +346,105 @@ thanks to fixes in optionality and more properties added to the model types.
304346
305347** All changes:**
306348
307- * Set global version in project file, bump to 0.4.0 ([ #39 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/39 ) )
308- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
309- * Update README.md ([ #40 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/40 ) )
310- [ @chriseidhof ] ( https://github.com/chriseidhof )
311- * Expose ` errorContextLength ` on ` struct XLSXFile ` ([ #38 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/38 ) )
312- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
313- * Add ` customProperties ` relationship ([ #34 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/34 ) )
314- ([ NSMutableString] ( https://github.com/NSMutableString ) )
315- * Update XMLCoder and ZIPFoundation dependencies ([ #36 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/36 ) )
316- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
317- * Update requirements in README.md
318- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
319- * Add extra relationship metadataThumbnail ([ #33 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/33 ) )
320- ([ NSMutableString] ( https://github.com/NSMutableString ) )
321- * Refactor Worksheet and Pane values to optional ([ #31 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/31 ) )
322- ([ hodovani] ( https://github.com/hodovani ) )
323- * Add bufferSize parameter to init ([ #30 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/30 ) )
324- ([ hodovani] ( https://github.com/hodovani ) )
325- * Add more cases to ` Relationship.SchemaType ` ([ #25 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/25 ) )
326- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
327- * Add ` public func parseDocumentRelationships ` ([ #23 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/23 ) )
328- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
329- * Make Relationships public, add parseRelationships ([ #22 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/22 ) )
330- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
331- * Add SharedStrings model, parse sharedStrings.xml ([ #8 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/8 ) )
332- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
333- * Paste XML snippet into WorksheetTests as is
334- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
335- * Add a second XML snippet to WorksheetTests
336- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
337- * Clarify issue reporting in README.md
338- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
339- * Test newspaces in attributes in WorksheetTests
340- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
341- * More XML with newlines in WorksheetTests
342- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
343- * Add newline characters test to WorksheetTests
344- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
345- * Add cell with a single attribute to WorksheetTests
346- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
347- * Add rows and cells to WorksheetTests
348- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
349- * Update names and types of properties on Worksheet ([ #18 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/18 ) )
350- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
351- * Rename sheetData on Worksheet and make it optional ([ #17 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/17 ) )
352- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
353- * Add simple ` Workbook ` model with tests (#16 )
354- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
355- * Make ` columns ` property optional on ` Worksheet ` ([ #14 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/14 ) )
356- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
357- * Fix example project after new files were added ([ #13 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/13 ) )
358- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
359- * Remove ` worksheetCache ` private property as unused ([ #11 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/11 ) )
360- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
361- * Clarify platform setting for CocoaPods in README
362- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
363- * Clarify Carthage instructions in README.md
364- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
365- * Add API for filtering cells by rows and columns ([ #7 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/7 ) )
366- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
367- * Add Carthage and support for tvOS and watchOS ([ #6 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/6 ) )
368- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
369- * Implement ` Strideable ` on ` ColumnReference ` ([ #5 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/5 ) )
370- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
371- * Add ColumnReference type with new API ([ #3 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/3 ) )
372- ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
373-
349+ - Set global version in project file, bump to 0.4.0 ([ #39 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/39 ) )
350+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
351+ - Update README.md ([ #40 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/40 ) )
352+ [ @chriseidhof ] ( https://github.com/chriseidhof )
353+ - Expose ` errorContextLength ` on ` struct XLSXFile ` ([ #38 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/38 ) )
354+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
355+ - Add ` customProperties ` relationship ([ #34 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/34 ) )
356+ ([ NSMutableString] ( https://github.com/NSMutableString ) )
357+ - Update XMLCoder and ZIPFoundation dependencies ([ #36 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/36 ) )
358+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
359+ - Update requirements in README.md
360+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
361+ - Add extra relationship metadataThumbnail ([ #33 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/33 ) )
362+ ([ NSMutableString] ( https://github.com/NSMutableString ) )
363+ - Refactor Worksheet and Pane values to optional ([ #31 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/31 ) )
364+ ([ hodovani] ( https://github.com/hodovani ) )
365+ - Add bufferSize parameter to init ([ #30 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/30 ) )
366+ ([ hodovani] ( https://github.com/hodovani ) )
367+ - Add more cases to ` Relationship.SchemaType ` ([ #25 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/25 ) )
368+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
369+ - Add ` public func parseDocumentRelationships ` ([ #23 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/23 ) )
370+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
371+ - Make Relationships public, add parseRelationships ([ #22 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/22 ) )
372+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
373+ - Add SharedStrings model, parse sharedStrings.xml ([ #8 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/8 ) )
374+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
375+ - Paste XML snippet into WorksheetTests as is
376+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
377+ - Add a second XML snippet to WorksheetTests
378+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
379+ - Clarify issue reporting in README.md
380+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
381+ - Test newspaces in attributes in WorksheetTests
382+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
383+ - More XML with newlines in WorksheetTests
384+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
385+ - Add newline characters test to WorksheetTests
386+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
387+ - Add cell with a single attribute to WorksheetTests
388+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
389+ - Add rows and cells to WorksheetTests
390+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
391+ - Update names and types of properties on Worksheet ([ #18 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/18 ) )
392+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
393+ - Rename sheetData on Worksheet and make it optional ([ #17 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/17 ) )
394+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
395+ - Add simple ` Workbook ` model with tests (#16 )
396+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
397+ - Make ` columns ` property optional on ` Worksheet ` ([ #14 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/14 ) )
398+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
399+ - Fix example project after new files were added ([ #13 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/13 ) )
400+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
401+ - Remove ` worksheetCache ` private property as unused ([ #11 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/11 ) )
402+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
403+ - Clarify platform setting for CocoaPods in README
404+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
405+ - Clarify Carthage instructions in README.md
406+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
407+ - Add API for filtering cells by rows and columns ([ #7 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/7 ) )
408+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
409+ - Add Carthage and support for tvOS and watchOS ([ #6 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/6 ) )
410+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
411+ - Implement ` Strideable ` on ` ColumnReference ` ([ #5 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/5 ) )
412+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
413+ - Add ColumnReference type with new API ([ #3 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/3 ) )
414+ ([ MaxDesiatov] ( https://github.com/MaxDesiatov ) )
374415
375416# 0.3.0 (13 November 2018)
376417
377- * Improve ` Worksheet ` model property naming ([ #2 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/2 ) ).
378- Some properties on ` Worksheet ` and its descendants had obscure names, most of that is
379- fixed now with old names marked as deprecated.
418+ - Improve ` Worksheet ` model property naming ([ #2 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/2 ) ).
419+ Some properties on ` Worksheet ` and its descendants had obscure names, most of that is
420+ fixed now with old names marked as deprecated.
380421
381422# 0.2.3 (12 November 2018)
382423
383- * Refine README.md to include implementation details.
424+ - Refine README.md to include implementation details.
384425
385426# 0.2.2 (11 November 2018)
386427
387- * Refine code comments and links in README.md
428+ - Refine code comments and links in README.md
388429
389430# 0.2.1 (11 November 2018)
390431
391- * Update README.md with instructions for Swift Package Manager.
432+ - Update README.md with instructions for Swift Package Manager.
392433
393434# 0.2.0 (11 November 2018)
394435
395- * Cell by row/column filtering API with ` worksheetCache ` ([ #1 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/1 ) )
396- This new API allows users to filter all cells by a row or column reference. To avoid
397- re-parsing of worksheets, a new private ` worksheetCache ` property is added on ` XLSXFile ` .
436+ - Cell by row/column filtering API with ` worksheetCache ` ([ #1 ] ( https://github.com/MaxDesiatov/CoreXLSX/pull/1 ) )
437+ This new API allows users to filter all cells by a row or column reference. To avoid
438+ re-parsing of worksheets, a new private ` worksheetCache ` property is added on ` XLSXFile ` .
398439
399440# 0.1.2 (10 November 2018)
400441
401- * Added macOS 10.11 deployment target to the podspec
442+ - Added macOS 10.11 deployment target to the podspec
402443
403444# 0.1.1 (10 November 2018)
404445
405- * Improved README, fixed podspec
446+ - Improved README, fixed podspec
406447
407448# 0.1.0 (10 November 2018)
408449
409- * First release with reading support for basic .xlsx files
450+ - First release with reading support for basic .xlsx files
0 commit comments