Docs Casual Sheets

xlsx round-trip audit

Per-probe lossiness report. Currently 46 of 46 pristine.

Generated by tests/e2e/xlsx-lossiness-audit.spec.ts. Build a rich xlsx with ExcelJS, push it through our parser → snapshot → exporter pipeline, re-parse the result with ExcelJS, and compare feature-by-feature.

Legend: ✅ survived · ⚠️ partial (present but shape differs) · ❌ dropped

Totals: 54 ✅ · 0 ⚠️ · 0 ❌ (of 54 probes)

Sheets

ProbeReferenceActualStatus
sheet order + names["Data","Hidden","Tabular"]["Data","Hidden","Tabular"]✅

Values

ProbeReferenceActualStatus
A1 header"Quarter""Quarter"✅
B2 number1234.561234.56✅

Formulas

ProbeReferenceActualStatus
B5 SUM formula text"SUM(B2:B4)""SUM(B2:B4)"✅
C5 cross-sheet formula references Hidden!A1"Hidden!A1""Hidden!A1"✅

Styles · font

ProbeReferenceActualStatus
bold preservedtruetrue✅
size preserved1212✅
family preserved"Calibri""Calibri"✅
color preserved{"argb":"FFFFFFFF"}{"argb":"FFFFFFFF"}✅

Styles · fill

ProbeReferenceActualStatus
header fill preserved{"type":"pattern","pattern":"solid","fgColor":{"argb":"FF2563EB"}}{"type":"pattern","pattern":"solid","fgColor":{"argb":"FF2563EB"}}✅

Styles · alignment

ProbeReferenceActualStatus
header horizontal"center""center"✅
header vertical"middle""middle"✅

Styles · border

ProbeReferenceActualStatus
header borders (4 sides) preserved["bottom","left","right","top"]["bottom","left","right","top"]✅

Number format

ProbeReferenceActualStatus
B2 currency"\"$\"#,##0.00""\"$\"#,##0.00"✅
B3 percent"0.00%""0.00%"✅
B4 date"yyyy-mm-dd""yyyy-mm-dd"✅
E2 accounting w/ red negatives"#,##0.00_);[Red](#,##0.00)""#,##0.00_);[Red](#,##0.00)"✅
E3 thousand-suffix “K”"#,##0.0,\"K\"""#,##0.0,\"K\""✅
E4 fraction (# ?/?)"# ?/?""# ?/?"✅
E5 scientific"0.00E+00""0.00E+00"✅
E6 locale tag [$$-409]"[$$-409]#,##0.00""[$$-409]#,##0.00"✅
E7 datetime w/ seconds"yyyy-mm-dd hh:mm:ss""yyyy-mm-dd hh:mm:ss"✅
E8 conditional bracket [>=100000]"[>=100000]#,##0,\"k\";#,##0""[>=100000]#,##0,\"k\";#,##0"✅
E9 literal text suffix “USD”"#,##0.00 \"USD\"""#,##0.00 \"USD\""✅

Merges

ProbeReferenceActualStatus
A7:C7 mergedtruetrue✅
ProbeReferenceActualStatus
C2 → github.com/CasualOffice/sheets"https://github.com/CasualOffice/sheets""https://github.com/CasualOffice/sheets"✅

Comments

ProbeReferenceActualStatus
B2 comment text"This is a comment on Q1 revenue.""This is a comment on Q1 revenue."✅

Defined names

ProbeReferenceActualStatus
RevenueRange"Data!$B$2:$B$4""Data!$B$2:$B$4"✅

Data validation

ProbeReferenceActualStatus
D2:D4 list constraint"list""list"✅

Sheet props

ProbeReferenceActualStatus
tab color (Data){"argb":"FFFF5722"}{"argb":"FFFF5722"}✅
tab color survives round-trip{"argb":"FFFF5722"}{"argb":"FFFF5722"}✅
frozen rows11✅
frozen columns11✅
hidden sheet survives"hidden""hidden"✅

Dimensions

ProbeReferenceActualStatus
column A width (18)1818✅
column B width (12)1212✅
row 1 height (24)2424✅

Page setup

ProbeReferenceActualStatus
orientation landscape"landscape""landscape"✅
header (left text)"&LCasual Sheets Audit""&LCasual Sheets Audit"✅

Tables

ProbeReferenceActualStatus
PeopleTable definedtruetrue✅

Workbook metadata

ProbeReferenceActualStatus
creator"casual-sheets audit""casual-sheets audit"✅

Macros (VBA passthrough)

ProbeReferenceActualStatus
xl/vbaProject.bin survives round-trip"1024 bytes""1024 bytes"✅
xl/vbaProject.bin byte-equal to original"byte-identical""byte-identical"✅
[Content_Types].xml has vbaProject Override"present""present"✅
xl/_rels/workbook.xml.rels has vbaProject relationship"present""present"✅
export blob MIME → macroEnabled.12"application/vnd.ms-excel.sheet.macroEnabled.12""application/vnd.ms-excel.sheet.macroenabled.12"✅

Pivots (cache passthrough)

ProbeReferenceActualStatus
xl/pivotCaches/pivotCacheDefinition1.xml survives round-trip"contains marker CASUAL-AUDIT-CACHE-DEF""present + marker"✅
xl/pivotCaches/pivotCacheRecords1.xml survives round-trip"contains marker CASUAL-AUDIT-CACHE-REC""present + marker"✅
xl/pivotTables/pivotTable1.xml survives round-trip"contains marker CASUAL-AUDIT-PIVOT-TABLE""present + marker"✅
[Content_Types].xml has pivotCacheDefinition Override"present""present"✅
[Content_Types].xml has pivotTable Override"present""present"✅
xl/workbook.xml has element"present""present"✅
xl/_rels/workbook.xml.rels has pivotCacheDefinition relationship"present""present"✅
pivot sheet rels has pivotTable relationship"present""present"✅

Synced from docs/xlsx-lossiness.md in CasualOffice/sheets. To update: edit upstream and re-run npm run sync-docs.