Merged-title ODS
- Input
- ODS with a merged Q3 Pipeline report title above real field names and a calculated Total row.
- Output
- CSV began Q3 Pipeline,column_2,column_3,column_4,column_5, then wrote the field names and data rows.
ODS to CSV runs through our table engine, which turns a selected OpenDocument sheet into delimited text and discards workbook presentation.
From real runs
| Element | Result | What happens |
|---|---|---|
| Sheet selection | Changed | CSV output contains one table, so choose the sheet option when the first ODS tab is not the data tab. |
| Rows and cells | Kept | The rich Pipeline rows exported in order with company, stage, ARR, owner, close_date, and total cells. |
| Formulas | Lost | The cached total value survived as 254500, but the OpenDocument formula did not appear in CSV. |
| Dates | Changed | Date values became ISO timestamps with midnight UTC in the CSV produced from the rich ODS workbook. |
| Merged title | Changed | The merged Q3 Pipeline row became a normal row with generated names for formerly empty cells. |
| Styles | Lost | OpenDocument styles, widths, colors, borders, filters, comments, and charts are outside CSV's model. |
| Additional sheets | Lost | The Notes tab was not present in the default CSV because the serializer writes the first table. |
CSV output contains one table, so choose the sheet option when the first ODS tab is not the data tab.
The rich Pipeline rows exported in order with company, stage, ARR, owner, close_date, and total cells.
The cached total value survived as 254500, but the OpenDocument formula did not appear in CSV.
Date values became ISO timestamps with midnight UTC in the CSV produced from the rich ODS workbook.
The merged Q3 Pipeline row became a normal row with generated names for formerly empty cells.
OpenDocument styles, widths, colors, borders, filters, comments, and charts are outside CSV's model.
The Notes tab was not present in the default CSV because the serializer writes the first table.
We converted our OpenDocument Spreadsheet sample (10 KB) with Table engine on 2026-09-11. It took 1 ms and produced a 225 B CSV file, 98% smaller than the input. The engine raised 2 warnings, listed below.
Input · sample.ods · 10 KB
OpenDocument spreadsheet: 2 sheets, 7 rows
Output · sample.csv · 225 B
4 data rows × 5 columns; header: company,stage,arr,owner,close_date
First lines of the output
company,stage,arr,owner,close_date
Northwind Traders,Proposal,48000,R. Ayers,2026-10-14
Contoso Ltd,Negotiation,120000,P. Ng,2026-09-30
Fabrikam,Qualified,22500,R. Ayers,2026-11-02
Tailspin Toys,Won,64000,M. Okafor,2026-09-03python with pandas
python - <<'PY'
import pandas as pd
pd.read_excel("in.ods", engine="odf", sheet_name="Pipeline").to_csv("out.csv", index=False)
PYInstall odfpy with pandas, then check formulas and typed identifiers before import.
The HTTP API and the MCP server run the exact engine this page uses (Table engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=ods&to=csv.
curl -X POST https://filetypeconverters.com/api/v1/convert \
-H "Authorization: Bearer $FTC_API_KEY" \
-F "file=@input.ods" -F "from=ods" -F "to=csv" \
-F 'options={"sheet":""}' \
--output output.csv| Key | Applies to | Type | Default |
|---|---|---|---|
| sheet | Reading OpenDocument Spreadsheet | string | |
| headerRowIndex | Reading OpenDocument Spreadsheet | number | 0 |
| dateHandling | Reading OpenDocument Spreadsheet | date · string | date |
| delimiter | Writing CSV | string | , |
| newline | Writing CSV | · |
/convert/ods-to-xlsx for an Excel-compatible workbook when sheet structure is still needed.Not into one CSV file. The engine can select a sheet, but a CSV download represents one rectangular table.
The converter writes cached values and drops formula expressions. Recreate calculations in the destination system if they matter.
A merged title is flattened into plain cells. Use headerRowIndex when the real field names start below that report title.