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.

A cat in a lab coat and sunglasses reviewing a clipboard beside towering stacks of spreadsheets
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.
Faults detected by each tool, by the level the file broke at
Fault levelFaultsFound by each tool
ContainerThe ZIP archive itself is damaged10
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 parse15
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 disagree13
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 be7
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 standard15
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 Excel71
10OfficeCLI validate · 10 of 71 (14%)
47OfficeCLI full gate · 47 of 71 (66%)
71I Hate Corrupt Files · 71 of 71 (100%)
All levels131
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