Skip to content
Apertura
.xlsxSpreadsheetMLStable

Excel in the browser

Shows what the author saw, not what the file stores.

A workbook stores a number and a format code; what you are supposed to see is the result of applying one to the other. Apertura evaluates the whole number-format grammar rather than approximating it, virtualises both axes, and reproduces the grid behaviours that make a spreadsheet readable — overflow into empty neighbours, ### for columns too narrow, a formula bar showing what a cell holds.

sample.xlsx
0 requests · nothing uploaded
Loading the viewer…
formatstatusidleopened inrendered bythis browser
What is supported

Everything below is parsed from the file, not approximated

Workbook

Sheets parsed on demand, sheet visibility and tab colours, defined names including the reserved print ones, the active sheet, and the 1904 date system — which shifts every date in the file and is the first thing a viewer gets wrong.

Number formats

The full grammar, evaluated rather than approximated: four sections chosen by value, conditions, digit placeholders 0 # ?, thousands grouping and scaling, percentages, currency and locale directives, fractions with computed or fixed denominators, scientific and engineering notation, colours, fill and padding tokens, and dates — including the 1900 leap-year bug, elapsed time [h]:mm, twelve-hour clocks, sub-second places and localised month and weekday names.

Values and formulas

Shared strings with per-run formatting, inline strings, booleans, error values and cached results. Shared formulas are expanded by translating the master’s references, so every cell shows the formula it really has rather than the one the top of the column has.

Formatting

The complete style table: fonts, fills (solid, patterned and gradient), all fourteen border styles at their real weights, alignment with wrapping, indent and rotation, and colours from every source a file uses — RGB, indexed palette, and theme colours with tint applied in HSL, as Excel does.

Layout

Column widths in Excel’s "character" units, row heights, hidden rows and columns, merged ranges, frozen panes on either axis, right-to-left sheets, gridline and header visibility, outlines and manual page breaks.

Conditional formatting

Colour scales, data bars and icon sets rendered; cellIs, top10, aboveAverage, duplicate and unique values, the text rules and time periods evaluated against the range’s own statistics.

Beyond the grid

Hyperlinks, comments, data validation, tables with their style options, autofilters, and drawings — images placed by their anchors, charts and shapes as labelled placeholders.
Known limitations

What we get wrong, published rather than discovered

A viewer that claims perfection loses the deal the moment somebody drops in their worst file. This list is the alternative.

How this is measured
  • The formula library covers 300 functions; the long tail reports #NAME? rather than failing.
  • There is no dependency graph, so a workbook cannot be recalculated as a whole — only individual formulas evaluated on demand.
  • Charts are placed and labelled but not yet drawn.
Found another one?
Send the file. It joins the corpus, which is the difference between a fix and a fix that stays.
Using it

The viewer, and the parser on its own

The parser produces a model that knows nothing about CSS or the DOM, so the same call runs in Node for extraction, search and conversion.

import { DocumentViewer } from '@apertura/react';

<DocumentViewer file={file} fit="width" />;

Other formats

WordStable

Paginated the way Word paginates — by measuring, not by guessing.

PowerPointBeta

A fixed canvas, which is why it can get very close.