Benchmark · 24 September 2026
Us vs OfficeCLI
Two tests. Real spreadsheets that open fine, where the right answer is "nothing's wrong". And broken files, where the right answer is finding the fault and fixing it.

Real spreadsheets
False alarms on 5,342 workbooks Excel opens
Us0
OfficeCLI239
OfficeCLI rejected 4.5% of files that open in Excel. We repaired 17 stale totals and returned everything else byte for byte.· lower is better
Broken files
Faults found, of 133
Us133
OfficeCLI100
We repaired 104 of 104 fixable files; OfficeCLI reports but doesn't repair. Good files wrongly flagged: us 0, OfficeCLI 2.
Side by side
What each one does
| Us | OfficeCLI | |
|---|---|---|
| Schema validation (ECMA-376) | ||
| Content checks: stale totals, broken names, formula errors | ||
| Layout: values too wide for their column (#####) | ||
| Numbers stored as text, traced to the cell | ||
| Knows what Excel accepts — no false alarms | ||
| Repairs the file |
Broken files
Where the difference is
Faults found at each level a file can break, across 133 broken files. The biggest gap is in files that pass the standard and are still wrong in Excel.
| Fault level | Faults | Found by each tool |
|---|---|---|
| ContainerThe ZIP archive itself is damaged | 10 | 6OfficeCLI validate · 6 of 10 (60%) 6OfficeCLI full gate · 6 of 10 (60%) 10I Hate Corrupt Files · 10 of 10 (100%) |
| XMLA part will not parse | 15 | 13OfficeCLI validate · 13 of 15 (87%) 13OfficeCLI full gate · 13 of 15 (87%) 15I Hate Corrupt Files · 15 of 15 (100%) |
| PackageParts, content types and links disagree | 13 | 10OfficeCLI validate · 10 of 13 (77%) 10OfficeCLI full gate · 10 of 13 (77%) 13I Hate Corrupt Files · 13 of 13 (100%) |
| IdentityA part is not what it claims to be | 7 | 5OfficeCLI validate · 5 of 7 (71%) 7OfficeCLI full gate · 7 of 7 (100%) 7I Hate Corrupt Files · 7 of 7 (100%) |
| SchemaLegal-looking XML that breaks the standard | 15 | 14OfficeCLI validate · 14 of 15 (93%) 15OfficeCLI full gate · 15 of 15 (100%) 15I Hate Corrupt Files · 15 of 15 (100%) |
| SemanticsPasses the standard, still wrong in Excel | 71 | 10OfficeCLI validate · 10 of 71 (14%) 47OfficeCLI full gate · 47 of 71 (66%) 71I Hate Corrupt Files · 71 of 71 (100%) |
| All levels | 131 | 58OfficeCLI validate · 58 of 131 (44%) 98OfficeCLI full gate · 98 of 131 (75%) 131I Hate Corrupt Files · 131 of 131 (100%) |
One example
Finding it vs fixing it
A number stored as text: legal XML, so no validator objects — but Excel leaves it out of the SUM, and the total drops from 149,050 to 100,950 on the next recalculation.
<c r="C2" t="s"><v>0</v></c> <!-- the text "48100" --> <c r="C5"><f>SUM(C2:C4)</f><v>149050</v></c>
OfficeCLI says
formula_cache_stale — Cached value disagrees with re-evaluation (cachedValue="149050", computedValue="100950"). Open in Excel to refresh, or call set to overwrite the formula.
Refreshing locks in 100,950, the wrong total.
We do
The stored SUM only adds up if C2 is a number, so C2 becomes one. IDs, zip codes and phone numbers are left alone.
The total stays 149,050 after Excel recalculates.
Method
How it was run
- Real spreadsheets
- 5,342 SpreadsheetBench workbooks from xlsx-corpus-bench, each verified to open in Microsoft Excel without repair. Scored on the files both tools completed.
- Broken files
- 177 files: a 156-case fault corpus plus 21 files written by openpyxl, xlsxwriter, pandas, python-docx and python-pptx. 133 carry a real fault; 37 are known-good.
- OfficeCLI
- v1.0.152, run as its delivery gate: validate, then view issues.
- False alarm
- A file that opens in Excel, reported as failing or broken.
- Repaired
- The file comes back changed and passing Microsoft's Open XML SDK validator.
See it on your own file.
Repair a file