Typed Facts sheet
- Input
- 16,476-byte XLSX with id, created_at, active, amount, note, optional and two tidy rows.
- Output
- 771-byte Parquet read back as
[{"id":101,"created_at":"2026-09-10T18:30:00.000Z","active":true,"amount":1234.5,...}].
XLSX to Parquet works best on a clean rectangular sheet because Parquet needs stable column types that a report-style workbook may not provide.
From real runs
| Element | Result | What happens |
|---|---|---|
| Rectangular data | Kept | A single Facts sheet with six typed columns and two rows wrote a 771-byte Parquet file and read back with the same row order. |
| Dates | Changed | Excel date cells read back from Parquet as ISO timestamp strings such as 2026-09-10T18:30:00.000Z. |
| Booleans | Kept | TRUE and FALSE worksheet values were preserved as boolean values when the generated Parquet file was read with our table engine. |
| Null cells | Kept | Blank worksheet cells became nullable Parquet values, visible as null for optional and amount fields in the verification run. |
| Mixed columns | Lost | A report workbook with a merged title over numeric columns failed with parquet cannot write mixed types: UTF8 and DOUBLE. |
| Workbook extras | Lost | Formulas, merged cells, styles, sheet tabs, comments, and filters are not part of the Parquet table output. |
| Parquet tuning | Changed | The current writer does not expose row-group sizing or compression controls through the public conversion options. |
A single Facts sheet with six typed columns and two rows wrote a 771-byte Parquet file and read back with the same row order.
Excel date cells read back from Parquet as ISO timestamp strings such as 2026-09-10T18:30:00.000Z.
TRUE and FALSE worksheet values were preserved as boolean values when the generated Parquet file was read with our table engine.
Blank worksheet cells became nullable Parquet values, visible as null for optional and amount fields in the verification run.
A report workbook with a merged title over numeric columns failed with parquet cannot write mixed types: UTF8 and DOUBLE.
Formulas, merged cells, styles, sheet tabs, comments, and filters are not part of the Parquet table output.
The current writer does not expose row-group sizing or compression controls through the public conversion options.
[{"id":101,"created_at":"2026-09-10T18:30:00.000Z","active":true,"amount":1234.5,...}].ENGINE_ERROR with parquet cannot write mixed types: UTF8 and DOUBLE, so the sheet needs a real header row before Parquet export.We converted our Excel XLSX sample (17 KB) with Table engine on 2026-09-11. It took 1 ms and produced a 778 B Apache Parquet file, 96% smaller than the input. The engine raised 2 warnings, listed below.
Input · sample.xlsx · 17 KB
Workbook with 2 sheets (Pipeline, Notes); first sheet 5 rows, 25 cells, 0 formulas
Output · sample.parquet · 778 B
Parquet file (PAR1 magic present)
Python pandas and pyarrow
python - <<'PY'
import pandas as pd
df = pd.read_excel("in.xlsx", sheet_name="Facts")
df.to_parquet("out.parquet", engine="pyarrow", index=False)
PYClean mixed-type columns first; pyarrow will also reject some ambiguous object columns.
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=xlsx&to=parquet.
curl -X POST https://filetypeconverters.com/api/v1/convert \
-H "Authorization: Bearer $FTC_API_KEY" \
-F "file=@input.xlsx" -F "from=xlsx" -F "to=parquet" \
-F 'options={"sheet":""}' \
--output output.parquet| Key | Applies to | Type | Default |
|---|---|---|---|
| sheet | Reading Excel XLSX | string | |
| headerRowIndex | Reading Excel XLSX | number | 0 |
| dateHandling | Reading Excel XLSX | date · string | date |
/convert/xlsx-to-csv when the sheet is messy and you need to clean title rows or merged headers manually.Parquet columns need stable types. In our rich workbook test, a merged title row caused text and numbers to land in the same generated column, and the writer rejected it.
Not through the current public options. The tabular writer creates the Parquet file directly and does not expose row group or compression tuning controls.
Blank cells become nulls in the table. The verified Parquet output read back null for the optional field in the first row and for amount in the second row.