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.
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):
The output is a spec-compliant
.odsfile 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.