XLSX to HTML

Nothing you choose here leaves your browser, and nothing is downloaded to make it work. A spreadsheet is a ZIP of XML and your browser can already unzip, so the whole thing happens here.

Set from what the file looks like once you choose one.

…or drop a file anywhere on this page.

A table you can paste into a page, and a whole file you can open.

What comes out is a real <table> with a header row, figures lined up on the right, and a stylesheet that works in dark mode — wrapped in a complete document, because a file you download is a file you open. If you only want the table, it is the part between the <table> tags and it is shown on screen before you download anything.

A spreadsheet has no way to say it. The first line of Anne,12 might be a heading or the first record, and the file is identical either way. Most converters simply assume it is a heading — pandoc does, which we measured — and that quietly eats the first row of every file that had none.

So this suggests, shows you why it suggested that, and lets you change it. The suggestion is made from the data: a first row that is all text above a row containing numbers is almost certainly names; a first row with numbers in it is almost certainly data, because column names are not numbers.

What comes across and what does not

Everything in the cells, including line breaks — which is the one place HTML can do what Markdown cannot. What does not come across is anything that was never in the cells: colours, column widths, merged cells, conditional formatting and charts. A table is the values and their shape.

Rows of different lengths are padded to the widest rather than trimmed to the shortest — a short row is normal in exported data, where trailing empty columns get dropped, and padding is the only choice that loses nothing. Blank lines are dropped rather than becoming rows of empty cells. Both are reported.

Where to go next