#1799·ce

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

Author: GitHubNewbie0Created Apr 11, 2026Updated Apr 11, 2026

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):

javascript
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.