Microsoft Excel’s own print output
The reference for every fixture is what Excel itself prints for that workbook. Not a rival library, not our opinion — Excel’s output is the definition of correct.
Every rendering engine says “high fidelity.” This page is where Rendlio has to prove it: per-area acceptance scores against Microsoft Excel’s own print output, on a corpus you will be able to download and re-run yourself. Until the harness publishes a number, the number does not exist here.
Fidelity only means something if the reference and the rules are fixed before the run. Ours are. The status vocabulary the scores use is the compatibility-report contract — every number that ever appears on this page uses exactly those words.
The reference for every fixture is what Excel itself prints for that workbook. Not a rival library, not our opinion — Excel’s output is the definition of correct.
Each rendered page is compared to the oracle page under a rubric fixed before the run: geometry, text, and colour tolerances a reviewer can check and sign, not a vibe.
Invoices, financial closes, dashboards, exports from real systems. Every feature in the registry must hold at least one fixture before its quality gate closes.
Same corpus, same engine version, same bytes out — across operating systems. A score that cannot be regenerated on your machine does not get published on ours.
The bands on this page are exactly the statuses in every compatibility report the engine emits. What we score ourselves on is what your pipeline gates on — one vocabulary, end to end.
| Status | What it means | What the report carries |
|---|---|---|
| SUPPORTED | The feature renders to match Excel’s print output within the rubric’s tolerances. Green is a guarantee backed by fixtures, not a hope. | The feature id and where it occurred. No warning code — there is nothing to warn about. |
| PARTIAL | Rendered with a documented deviation — typically an interactive behaviour flattened to its current state, or a date-dependent rule evaluated at conversion time. | A warning code naming exactly what differs and why, plus the locations affected. |
| SKIPPED | Present in the file but intentionally outside conversion semantics — macros are never executed, live external data is never fetched (cached values render instead). Not a fidelity gap, still disclosed. | The feature id, its locations, and a warning code where one applies. |
| UNSUPPORTED | Not rendered faithfully — so not silently approximated. The element is omitted or substituted, and the report says so before your customer sees the page. | A warning code, the locations, and a non-zero exit code your CI can gate on. |
Scores are reported per area, per fixture, next to the exact corpus hash that produced them. You will never see a single headline percentage on this page — a format this large cannot be summarised into one number honestly.
The corpus harness is being built now. Per-feature acceptance scores publish here as they land, area by area, and the full public corpus ships at GA as an Apache-2.0 repository — so every number on this page can be reproduced by anyone.
Nothing here will ever be typed in by hand: the tables are generated from the harness’s committed result files, and the site build fails if a score appears without a data file behind it.
| Area | Registry entries | Pass rate | SSIM vs oracle | Status |
|---|---|---|---|---|
| Parsing & workbook modelZIP/OPC container, shared strings, cached formula values, merged ranges, date systems | 29 | — | — | publishing with M1 gate |
| Styles & themesborders, pattern fills, fonts, theme colours and tint maths, xf resolution | 11 | — | — | publishing with M1 gate |
| Number formatsthe full format-code language: General, dates, fractions, sections, locales, fills | 22 | — | — | publishing with M1 gate |
| Layout & printrow/column geometry, pagination, print areas and titles, headers/footers, scaling | 42 | — | — | publishing with M1 gate |
| Conditional formattingcellIs rules, colour scales, data bars, icon sets, top/bottom and average rules | 16 | — | — | publishing with M1 gate |
| Chartsbar, line, pie, and area chart types with axes, legends, and data labels | 22 | — | — | publishing with M1 gate |
| Images & drawingsembedded rasters, transcoding of non-JPEG/PNG formats, anchored placement | 2 | — | — | publishing with M1 gate |
| Fonts & texttext measurement, metric substitution (Calibri, Aptos, Arial…), bundled OFL faces, wrapping | 15 | — | — | publishing with M1 gate |
| PDF outputPDF 1.7 and PDF/A-2b, deterministic font subsets, veraPDF-clean in CI | 14 | — | — | publishing with M1 gate |
| PNG outputper-page rasters from the same layout IR, 96–600 DPI | 5 | — | — | publishing with M1 gate |
Areas and entry counts come from the feature registry in the source repository (spec/features.yaml) — the same registry that drives the engine’s fixtures and every compatibility report. Pass rate = share of an area’s fixtures scored SUPPORTED under the rubric; SSIM = structural similarity of rendered pages against rasterised Excel oracle prints. Comparative numbers against other engines are a separate, later publication — they appear only once the corpus and harness are public, so anyone can re-run them.
Engine code contains no clock, no randomness, and no network — enforced by analyzers in CI. The same corpus renders to the same bytes, every run.
Each published run re-renders the corpus on multiple platforms. Any byte difference between them fails the gate — the score never publishes.
The corpus is content-addressed: its sha256 prints next to every score, so you can verify you are re-running exactly what we scored.
Corpus scores describe our fixtures. The playground applies the same standard to your file: one workbook in, the rendered output and its compatibility report out.