Skip to content
Server-sideDeleted in 30 minutes

Convert XLS to HTML

Old spreadsheets were laid out by hand. Before anyone had a design system, people built headings by merging cells, made columns by leaving one empty, and drew borders to fake a table inside a table. All of that comes through as markup, which is why publishing a legacy sheet usually needs a pass of tidying that a modern one does not.

Use this without the search next time. Prathom Workbench puts Prathom's tools in your toolbar.

Add to Chrome — free
XLSHTML

Drop your XLS file here, or click to browse

Up to 50 MB. Deleted automatically after 30 minutes.

What it does

  • The first sheet becomes a table element
  • Merged cells arrive as row and column spans
  • Formulas are published as their computed values

How to use XLS to HTML

  1. 1

    Upload the .xls

    Any legacy binary workbook. The first sheet is the one published, so move it if necessary.

  2. 2

    The sheet becomes markup

    Rows and cells map directly and merged regions become spans, which is how the original hand-built layout survives.

  3. 3

    Tidy the spacer rows and columns

    Old sheets often use empty rows and columns for spacing. On a page these become empty cells that are better removed.

How it works

The compound binary is opened, its first worksheet read, and each row emitted as a table row. Merged regions become row and column spans, and cells holding formulas contribute their stored computed value.

Cell formatting is carried into the markup, which for a legacy sheet is more significant than usual: in files of that era the formatting frequently is the structure.

Why legacy sheets convert differently from modern ones

A spreadsheet built in 2003 had no other way to express layout. Headings were merged cells. Section breaks were empty rows. Columns were separated by a blank column set to a narrow width. Grouping was borders.

All of that is reproduced faithfully, because a converter cannot distinguish a deliberate spacer from a meaningful empty cell. The result is a correct table that carries twenty years of layout habits into a web page.

The tidy pass

Three things are worth removing before publishing: empty spacer rows, empty spacer columns, and inline formatting that fights the destination site's own table styles. None takes long, and the difference in the rendered page is substantial.

If the sheet is complex

Consider converting to XLSX first and rebuilding the table there, or exporting to CSV and generating clean markup from the data. Going straight to HTML preserves the appearance, which is right when the appearance is what you want and wrong when what you want is the numbers in a well-structured page.

Old workbooks were laid out by hand

Spreadsheets from the .xls era were frequently used as page-layout tools rather than as data tables. Merged cells to make a title span the width, blank rows for spacing, borders drawn to suggest sections, a heading floating three rows above the numbers it describes.

None of that survives conversion cleanly, because none of it is structure — it is appearance standing in for structure. Merged cells become spans, blank rows become empty table rows, and the result is markup that renders roughly like the original and reads badly to anything that is not a browser.

If the table is going into a page that matters, expect to tidy it: strip the spacer rows, move the floating heading into a real heading element, and let the page's own styles do the rest.

Examples

An old price list for a web page

prices-2005.xls - merged title row, one spacer column
prices-2005.html - title as a column span, spacer cells present

The merged title arrives correctly as a span. The empty spacer column is now an empty column in the table and is worth deleting before publishing.

A sheet with borders drawn as layout

summary.xls - borders used to group sections
summary.html - one table, borders as cell styling

The visual grouping came from borders rather than from structure, so the markup is a flat table that happens to have lines on it. Rebuilding it as separate tables reads far better on a page.

Frequently asked questions

Why does the markup need tidying?

Because old spreadsheets encode layout as content. Spacer rows, empty columns, merged cells used for headings and borders drawn to imply grouping were the only tools available, so they appear throughout files of that era. A converter has to reproduce them faithfully, since it cannot know which empty column is deliberate. Removing them afterwards takes a minute and improves the result considerably.

Which sheet is published?

The first one in the workbook, because an HTML table is a single table. If the sheet you want is not first, reorder the workbook before converting. This is easy to overlook with legacy files, which often carry several sheets of working notes that nobody has looked at in years.

Do the formulas publish as formulas?

No. Each formula is published as the value it had produced, because a browser has no calculation engine and inert formula text on a page would be useless. The table is a snapshot of the sheet at the moment of conversion, so a workbook that is still in use needs republishing when its numbers change.