.ods round-trip results vs the same probe set.
Generated by tests/e2e/ods-lossiness-audit.spec.ts. Build a reference ODS
with SheetJS, run it through our parser → snapshot → exporter pipeline,
re-parse the result with SheetJS, and compare feature-by-feature.
Legend: ✅ survived · ⚠️ partial · ❌ dropped
Totals: 22 ✅ · 0 ⚠️ · 0 ❌ (of 22 probes)
Parser constraints
- Current
@e965/xlsx ODS parser exposes formulas, merges, hyperlinks, comments, defined names, and number formats.
- Current probing does not show ODS row heights, column widths, freeze panes, or general font/fill/alignment style objects on the parsed worksheet model.
- Those features need a separate viability pass before we can claim true round-trip support in our app.
Sheets
| Probe | Reference | Actual | Status |
|---|
| sheet order + names | ["Data","Hidden"] | ["Data","Hidden"] | ✅ |
Values
| Probe | Reference | Actual | Status |
|---|
| A1 header | "Quarter" | "Quarter" | ✅ |
| B2 number | 1234.56 | 1234.56 | ✅ |
| Probe | Reference | Actual | Status |
|---|
| B4 SUM formula text | "SUM(B2:B3)" | "SUM(B2:B3)" | ✅ |
| B4 cached result | 1234.81 | 1234.81 | ✅ |
| D4 cross-sheet formula text | "Hidden!A1" | "Hidden!A1" | ✅ |
| D4 cross-sheet cached result | "shadow" | "shadow" | ✅ |
Merges
| Probe | Reference | Actual | Status |
|---|
| A6:B6 merged | true | true | ✅ |
| Probe | Reference | Actual | Status |
|---|
| B2 currency | "\"$\"#,##0.00" | "\"$\"#,##0.00" | ✅ |
| B3 percent | "0.00%" | "0.00%" | ✅ |
Hyperlinks
| Probe | Reference | Actual | Status |
|---|
| C2 external hyperlink | "https://github.com/schnsrw/sheets" | "https://github.com/schnsrw/sheets" | ✅ |
| Probe | Reference | Actual | Status |
|---|
| D2 comment text | "ODS comment" | "ODS comment" | ✅ |
Defined names
| Probe | Reference | Actual | Status |
|---|
| RevenueCell | "Data!$B$2" | "Data!$B$2" | ✅ |
Dimensions
| Probe | Reference | Actual | Status |
|---|
| column A width | 125 | 125 | ✅ |
| column B width | 77 | 77 | ✅ |
| row 1 height | 24 | 24 | ✅ |
| row 2 height | 18 | 18 | ✅ |
Styles · font
| Probe | Reference | Actual | Status |
|---|
| bold preserved | 1 | 1 | ✅ |
| font color preserved | "#ff0000" | "#ff0000" | ✅ |
Styles · fill
| Probe | Reference | Actual | Status |
|---|
| fill color preserved | "#00ff00" | "#00ff00" | ✅ |
Styles · alignment
| Probe | Reference | Actual | Status |
|---|
| horizontal alignment preserved | 2 | 2 | ✅ |
| vertical alignment preserved | 2 | 2 | ✅ |
Synced from docs/ods-lossiness.md in schnsrw/sheets. To update: edit upstream and re-run npm run sync-docs.