ガイド · Excel → 表
Excel を HTML に:数式と書式
表計算のファイルは、見えている内容より多くを抱えています。数字の裏の数式、その上に被せた表示書式、それらを横切る結合。HTML にはどれもありません。
だから問いは「何か失われるか」ではなく「失われるのはどれか、そのなかに必要だったものがあるか」です。
数式はその答えになる
=SUM(B2:B9) の入ったセルは 4211 として出てきます。Web ページで欲しいのはほぼ常にそちらです —— ページ上の数式はただの文字列で、数式に見える文字列は数字より悪いものです。
こうできるのは、Excel が保存のたびに計算結果を数式の隣にキャッシュしているからです。変換ツールはそのキャッシュされた値を読むので、自前の数式エンジンを持つ必要がありません。
B10: =SUM(B2:B9)<td>4211</td>空になる唯一の場合
そのブックがプログラムで生成されたもの —— Python の書き出し、レポートの処理、表計算ライブラリを使った何か —— で、Excel で一度も開かれていない場合、キャッシュされた値はありません。書いた人がいないからです。そういうセルは空になります。
直し方は、Excel か LibreOffice で一度開いて一度保存することです。それで全部計算され、値が書き込まれます。あるシートの数式セルが空として読めたときは変換ツールが伝えるので、こちらで推測する必要はありません。
数式のエラーも #DIV/0! や #REF! ではなく空になります。ある列の照合が壊れているシートは空白の列を出すので、理由もなく列が空になったときは元のファイルを見に戻る価値があります。
表示書式は残らない
前もって知っておく価値が一番あるのがこれです。表示書式は Excel が値の上に被せたマスクで、その下の値は裸です。
なので $1,234.50 は 1234.5 になります —— 通貨記号、桁区切り、固定の小数桁、全部なくなります。12.50% と表示されているセルは 0.125 になります。ずっとそこにあったのはその数字だからです。
出力で書式が大事なら、TEXT() で組み立てた書式付きの文字列を入れた列を表に足して、その列を使ってください。そうすれば文字列になり、文字列はそのままの形で通ります。
日付は例外です。表示書式から判定して 2026-03-14 の形で出し、時刻があれば後ろに付けます。意図して UTC で読み戻しています —— 素直に書くと、グリニッジより西にいる人の手元では日付が一日ずつ戻ります。
結合セルはばらける
A1:C1 で結合したタイトルは、文字の入ったセル一つと、その隣の空のセル二つになります。Excel は値を左上のセルに置き、残りは本当に空のままにします。結合の情報がなければ、読めるのはそれだけです。
HTML は colspan と rowspan で結合を表現できるので、直すならあとから一行の編集です。あるいは先に Excel で結合を解除してください —— 多くの場合、その結合は見出しを中央に置くためだけのものです。
シートと、容量の上限
上限は二つ。ブック一つ 10 MB —— ほかの形式の 25 MB より低いのは、.xlsx が zip で、タブのなかで展開するとファイルサイズから想像するよりずっと多くのメモリを食うからです。それと、選んだ全部の合計で十万セル。だからシートを絞れば大きいブックも通ることがあります。
パスワードで保護されたブックは、途中まで読むのではなく断ります。古いバイナリの .xls も同じです。それらは先に .xlsx で保存してください。
- 01既定では一枚目のシートを変換します。残りは名前で一覧に出るので、欲しいものにチェックを入れてください。
- 02複数選ぶと、それぞれが自分の <table> になり、上にシート名の <h2> が付きます。一枚だけ選ぶと、名前は表の <caption> に入ります。
- 03末尾の空行を落としたあとで空になるシートは、空の表を出すのではなく、そう伝えます。
ブックをドロップして、シートを選んで、表をコピーしてください。すべてブラウザのなかで読みます —— 財務のモデルがこの端末を出ることはありません。
Excel → 表