jspreadsheet / jspreadsheet/ce

**ODS export — closing the loop on ODS round-trips**

Open
#1,799 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
7.2k
Forks
890
PR merge metrics
No merged PRs in 30d

Description

ODS export — closing the loop on ODS round-trips

Jspreadsheet CE can import ODS files via tabularjs, but there's currently no way to export back to ODS. Users who open an ODS file, edit it, and want to save it back to ODS are stuck — the only export option is CSV.

ODS export is now possible with odf-kit (Apache 2.0, zero dependencies beyond fflate for ZIP):

import { OdsDocument } from 'odf-kit'

const data = jspreadsheet.getData() // array of arrays

const doc = new OdsDocument()
const sheet = doc.addSheet('Sheet1')
for (const row of data) {
  sheet.addRow(row)
}
const bytes = await doc.save()

The output is a spec-compliant .ods file that passes the OASIS ODF validator and opens correctly in LibreOffice, Excel, and Google Sheets.

odf-kit also supports number formats, merged cells, freeze rows/columns, hyperlinks, and sheet tab colors — so the integration can be as rich as needed.

Happy to help with a proof-of-concept or integration if there's interest.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing CSV export and the ODS import through tabularjs, then review how jspreadsheet.getData() exposes the sheet data. A completed integration should use odf-kit to produce a spec-compliant .ods file that opens in LibreOffice, Excel, and Google Sheets, with the required export entry point documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.