SwiftSheets
A pure Swift spreadsheet library with one format-neutral model and one codec per file format — XLSX, XLSM, CSV/TSV, ODS and Apple Numbers. Foundation only, and no package dependencies — bytes are folded by whichever DEFLATE the machine already has.
Documents
Implementation spec
The design, written down before the code. Appendix B records every implementation decision
and the reason behind it — including the ones that were measured and then rejected.
Format support table
What each format actually carries, across 48 features — measured against Excel, LibreOffice,
Numbers.app, openpyxl and numbers-parser, not claimed from the specifications.
Spec feature matrix
The same question from the other side: every feature each format's own specification names,
and how far SwiftSheets carries it — read and write kept apart, with the API for each of the
196 rows.
Performance record
What a million cells cost to read and write, in seconds and megabytes, measured by a script in
the repository on a named machine — the numbers the README quotes are checked against this page's
source, never remembered.
Interoperability guide
What happens to each format's own features when a file is converted into another — the four
possible outcomes, all nine directions, and the test that measures each claim.
Getting started
- Getting started — from an empty package to a saved file
- Cookbook — thirteen complete recipes, compiled and run by CI
- Migrating to 1.0 — every rename since 0.20, and the one change the compiler cannot find
- API stability — what 1.0 promises, and what it does not (draft)
- llms.txt — the short map of the library written for AI coding agents
- Installation — one line in
Package.swift - Limits — what to know before pointing it at a very large or very strange file
- openpyxl ↔ SwiftSheets — the API, side by side with the library it uses as its behavioural reference
- Contributing · Security policy