CoreXLSX
Excel spreadsheet (XLSX) format support in pure Swift
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Model types in CoreXLSX
directly map internal structure of XLSX format with
more sensible naming applied to a few attributes. The API is pretty simple:
import CoreXLSX
guard let file = XLSXFile(filepath: "./categories.xlsx") else {
fatalError("XLSX file corrupted or does not exist")
}
for path in try file.parseWorksheetPaths() {
let ws = try file.parseWorksheet(at: path)
for row in ws.sheetData.rows {
for c in row.cells {
print(c)
}
}
}
This prints every cell from every worksheet in the given XLSX file. Please refer to the
Worksheet
model
for more atttributes you might need to read from a parsed file.
If you stumble upon a file that can't be parsed, please
file an issue posting the exact
error message. Thanks to use of standard Swift Codable
protocol, detailed errors are
generated listing a missing attribute, so it can be easily added to the model enabling
broader format support. Attaching a file that can't be parsed would also greatly help in
diagnosing issues. If these files contain any sensitive data, we suggest obfuscating or
generating fake data with same tools that generated original files, assuming the issue can
still be reproduced this way.
How does it work?
Since every XLSX file is a zip archive of XML files, CoreXLSX
uses
XMLCoder
library and standard Codable
protocols to map XML nodes and atrributes into plain Swift structs.
ZIPFoundation
is used for
in-memory decompression of zip archives. A detailed description is available
here.
Requirements
- Xcode 10
- Swift 4.2
- iOS 9.0 / watchOS 2.0 / tvOS 9.0 / macOS 10.11
Installation
Swift Package Manager
Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.
Once you have your Swift package set up, adding CoreXLSX
as a dependency is as
easy as adding it to the dependencies
value of your Package.swift
.
dependencies: [
.package(url: "https://github.com/MaxDesiatov/CoreXLSX.git",
.upToNextMajor(from: "0.3.0"))
]
CocoaPods
CoreXLSX is available through CocoaPods. To install
it, simply add pod 'CoreXLSX', '~> 0.3.0'
to your Podfile
like shown here:
source 'https://github.com/CocoaPods/Specs.git'
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
use_frameworks!
target '<Your Target Name>' do
pod 'CoreXLSX', '~> 0.3.0'
end
Carthage
Carthage is a dependency manager that builds your dependencies and provides you with binary frameworks.
Carthage can be installed with Homebrew using the following command:
$ brew update
$ brew install carthage
Inside of your Cartfile
, add GitHub path to CoreXLSX
master
branch (Carthage
support is not available in a stable release yet):
github "MaxDesiatov/CoreXLSX" "master"
Then, run the following command to build the framework:
$ carthage update
Drag the built frameworks (including the subdependencies XMLCoder
and
ZIPFoundation
into your Xcode project.
Author
License
CoreXLSX is available under the Apache 2.0 license. See the LICENSE file for more info.