Skip to content
Genom

Open an Excel workbook in your browser

Free, no sign-up, and the file never leaves your computer.

Samplesample.xlsx
Loading the viewer…
Also opensDrop any of them on the viewer above — the format is recognised from the bytes.

Drop an .xlsx above. Both axes are virtualised, so a sheet with a million rows opens as quickly as one with ten.

Numbers are shown the way Excel would show them, not the way the file stores them — the format code is evaluated, not approximated.

How the format actually works

A spreadsheet stores a number, not what you see

A cell holding a date stores 45292 and a format code. What you are meant to see is the result of applying one to the other, and the grammar of those codes is far larger than it looks: four sections chosen by the value’s sign, conditions, digit placeholders, thousands scaling, fractions with computed denominators, elapsed-time brackets, localised month names. Viewers that approximate it get dates, currencies and negatives wrong in ways that look plausible — which is worse than failing. There is also the 1904 date system, which shifts every date in the file by four years and is the first thing a viewer gets wrong.

What is supported

Everything below is parsed from the file, not approximated

Read from the bytes the format actually stores, into a model that does not know which generation produced it.

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.
Being straight with you

What this does not do

Every renderer has a list like this. Most do not publish it.

  • 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.

If a file of yours renders wrong, send it to admin@genom.dev. It joins the corpus everything is measured against, which is what makes a fix stay fixed.

Questions

Things people ask

Is my workbook uploaded anywhere?
No. The file is opened by JavaScript running in this tab and is never sent anywhere — there is no upload, no server-side conversion and no copy kept. You can confirm it: open your browser’s network panel, then open a file. Nothing leaves. This also means the page works with no connection at all once it has loaded.
Are formulas shown or calculated?
Both, within limits. Every cell shows the formula it really holds — shared formulas are expanded by translating the master’s references rather than showing the top of the column’s formula everywhere. Individual formulas can be evaluated on demand across about 300 functions. There is no dependency graph, so the workbook is not recalculated as a whole.
How large a file can it open?
Large. Rows and columns are both virtualised and inflated ZIP entries are held under a memory budget, so size is limited by your machine rather than by the viewer holding everything at once.
Are charts drawn?
Not yet. Charts are placed and labelled where they belong, and their underlying numbers are readable, but the chart itself is not rendered.
Using it in your own code

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. Excel and its other generation are one package.

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

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