{"name":"@deckyard/sheets","description":"Read, edit and write spreadsheet formats - ODS, XLSX and Gnumeric - over one cell model, with a CSV bridge","versions":{"0.1.0":{"version":"0.1.0","kind":"git","url":"https://github.com/deckyard/deck-sheets.git","ref":"0.1.0","commit":"6195eb97e4b9e126c845ed4070cfbb5b730f503d","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.25.0"},"capabilities":[],"keywords":["jennifer","deck","spreadsheet","ods","xlsx"],"description":"Read, edit and write spreadsheet formats - ODS, XLSX and Gnumeric - over one cell model, with a CSV bridge","publishedAt":"1793218517","repoId":1420946936,"repoOwnerId":346943577,"repoOwner":"deckyard"},"0.2.0":{"version":"0.2.0","kind":"git","url":"https://github.com/deckyard/deck-sheets.git","ref":"0.2.0","commit":"a44a1d1abd5a2013401dcb876e01d29c54c8d362","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.25.0"},"capabilities":[],"keywords":["jennifer","deck","spreadsheet","ods","xlsx"],"description":"Read, edit and write spreadsheet formats - ODS, XLSX and Gnumeric - over one cell model, with a CSV bridge","publishedAt":"1793647812","repoId":1420946936,"repoOwnerId":346943577,"repoOwner":"deckyard"}},"readme":"# @deckyard/sheets\n\n[![test](https://github.com/deckyard/deck-sheets/actions/workflows/test.yml/badge.svg)](https://github.com/deckyard/deck-sheets/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-github%20pages-blue)](https://deckyard.github.io/deck-sheets/)\n[![release](https://img.shields.io/github/v/release/deckyard/deck-sheets)](https://github.com/deckyard/deck-sheets/releases/latest)\n\nRead, edit and write OpenDocument (`.ods`), Office Open XML (`.xlsx`),\nGnumeric and delimited text from [Jennifer](https://jennifer-lang.dev/), over\none `Workbook` model of typed cells. It translates formulas between the ODS and\nXLSX dialects, evaluates about 110 spreadsheet functions, applies number\nformats and styles, streams sheets too large to hold in memory, and exports to\nHTML, JSON and PDF.\n\n**[Documentation](https://deckyard.github.io/deck-sheets/)**\n\n## Install\n\n```sh\njvc add @deckyard/sheets\n```\n\njvc vendors the deck's `src/` into `vendor/deckyard/sheets/`. Without jvc,\nunpack `src/` from a release archive (`deckyard-sheets-\u003cversion\u003e.tar.gz`) into\nthat directory.\n\nRequires Jennifer 0.25.0 or newer. No capabilities: no network, subprocesses\nor database. `open` and `save` use `fs`; every codec also has a `bytes` entry\npoint.\n\n## Example\n\n```jennifer\nimport \"@deckyard/sheets/\" as sheet;\n\ndef wb as sheet.Workbook init sheet.open(\"sales.xlsx\");\ndef s as sheet.Sheet init sheet.sheetByName($wb, \"Q3\");\n\nfor (def line in sheet.rows($s)) {\n    io.printf(\"%s: %f\\n\", sheet.asString($line[0]), sheet.asNumber($line[1]));\n}\n\n$s = sheet.addRow($s, [sheet.text(\"East\"), sheet.number(1510.25)]);\n$wb = sheet.putSheet($wb, $s);\nsheet.save($wb, \"sales.ods\");     # the extension picks the format\n```\n\n## Development\n\n```sh\ntools/check-all.sh                   # the whole gate, as CI runs it\njennifer test src/sheets_test.j      # the test suite\ntools/check-extra.sh                 # LibreOffice / Gnumeric validation and oracles\ntools/pack.sh dist                   # the release archive\n```\n\nCI also opens every written file in LibreOffice and compares the values back\n(`.github/workflows/validate.yml`): the only check that catches a file this\ndeck reads but a real application rejects.\n\n## Licence\n\nLGPL-3.0-only, see [LICENSE](LICENSE). Copyright (C) 2026 mplx \u0026lt;mplx@jennifer-lang.dev\u0026gt;.\n"}