Excel の表を Web ページで公開したいとき、HTML に変換しておくと、閲覧者は Excel を開かずにブラウザ上で内容を確認できます。逆に、Web から取り込んだ表を Excel で編集したい場合は、HTML を Excel に戻すと書式を整えたり計算を追加したりできます。
Excel の表を Web で見せるための HTML 出力と、その HTML を再び Excel で扱うための読み込みを、Spire.XLS for Python で行います。ロゴ画像を 1 ファイルに埋め込む方法も取り上げます。
クイックナビゲーション
- Excel と HTML の相互変換
- サンプルブックと実行環境
- シートを HTML に保存する
- 画像を埋め込んで 1 ファイルにする
- ワークブック全体を HTML に変換する
- HTML を Excel に戻す
- まとめ
- FAQ
1. Excel と HTML の相互変換
Spire.XLS for Python では、次の 2 方向の変換を扱えます。
| 変換方向 | 使用する API | 主な用途 |
|---|---|---|
| Excel → HTML(シート) | Worksheet.SaveToHtml() |
1 枚のシートを Web ページにする |
| Excel → HTML(ブック全体) | Workbook.SaveToHtml() |
シートを切り替えられる HTML にする |
| HTML → Excel | Workbook.LoadFromHtml() |
Web の表を Excel で編集する |
Excel → HTML では、ワークシート単位で HTML を出力します。ブック全体を変換する場合は Workbook.SaveToHtml() を使うと、ページ下部のタブからシートを切り替えられる HTML になります。画像を含むシートでは、HTMLOptions.ImageEmbedded を True にすると、画像を HTML 内に埋め込んだ 1 ファイルとして保存できます。
HTML → Excel では、LoadFromHtml() で HTML を読み込み、SaveToFile() で .xlsx として保存します。表の値と書式、埋め込まれた画像がワークブックに取り込まれます。
2. サンプルブックと実行環境
ライブラリのインストール
pip install spire.xls
スクリプトでは、必要なクラスを読み込みます。
from spire.xls import *
import os
サンプルワークブック
今回は、3 つのシートを持つ 在庫管理表.xlsx を使います。
| シート | 内容 |
|---|---|
| 在庫管理 | 12 商品の在庫一覧(A1:F15、右上にロゴ) |
| 入庫履歴 | 入荷日・商品・入庫数の履歴(6 行) |
| 商品マスタ | 商品コード・商品名・カテゴリ・標準単価(12 行) |
在庫管理シートには、タイトル行、見出し行、12 行の明細、右上のロゴ画像があります。
| 列 | 内容 | 例 |
|---|---|---|
| A | 商品コード | A-101 |
| B | 商品名 | ノートPC |
| C | 在庫数 | 42 |
| D | 倉庫 | 東京 |
| E | 最終入荷日 | 2026/09/28 |
| F | 備考 | 入荷待ち 10 台 |
表全体は A1:F15 の範囲にあり、3 行目が見出しです。右上には logo.png を配置しています。
3. シートを HTML に保存する
ワークシートを HTML として保存します。Worksheet.SaveToHtml() に出力パスを渡すだけです。
import os
from spire.xls import *
os.makedirs("output", exist_ok=True)
workbook = Workbook()
workbook.LoadFromFile("在庫管理表.xlsx")
sheet = workbook.Worksheets[0]
sheet.SaveToHtml("output/在庫表.html")
workbook.Dispose()
print("保存しました: output/在庫表.html")
print("ファイルサイズ:", os.path.getsize("output/在庫表.html"), "bytes")
変換元の Excel シートと、生成された HTML をブラウザで表示した結果を並べると次のようになります。

このスクリプトを excel_to_html.py として保存して実行すると、保存したファイル名とサイズが表示されます。

HTML には表のセル、見出し行の背景色、罫線、列幅が反映されます。画像を含むシートでは、次の節の設定で画像を HTML 内に埋め込めます。
4. 画像を埋め込んで 1 ファイルにする
HTML と画像を 1 ファイルで配布したい場合は、HTMLOptions の ImageEmbedded を True に設定します。
import os
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("在庫管理表.xlsx")
sheet = workbook.Worksheets[0]
options = HTMLOptions()
options.ImageEmbedded = True
sheet.SaveToHtml("output/在庫表_画像埋め込み.html", options)
workbook.Dispose()
print("保存しました: output/在庫表_画像埋め込み.html")
print("ファイルサイズ:", os.path.getsize("output/在庫表_画像埋め込み.html"), "bytes")
ImageEmbedded = True を指定すると、ロゴ画像が HTML 内に埋め込まれます。画像ファイルを別途コピーせずに HTML 1 つを配布できるため、メール添付や社内ポータルへの掲載が簡単になります。
5. ワークブック全体を HTML に変換する
複数のシートを切り替えて閲覧できる HTML にしたい場合は、Workbook.SaveToHtml() を使います。ワークブック全体が 1 つの HTML ページとして保存され、ページ下部のタブからシートを切り替えられます。
import os
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("在庫管理表.xlsx")
workbook.SaveToHtml("output/在庫管理表_全体.html")
workbook.Dispose()
print("保存しました: output/在庫管理表_全体.html")
print("ファイルサイズ:", os.path.getsize("output/在庫管理表_全体.html"), "bytes")
生成された HTML をブラウザで開くと、表の下に「在庫管理」「入庫履歴」「商品マスタ」のタブが表示されます。タブを選ぶと、対応するシートの内容に切り替わります。

Workbook.SaveToHtml() は、HTML ファイルと <ファイル名>_files フォルダを出力します。フォルダにはシートごとの HTML とタブ用のページが保存されるため、HTML とフォルダをセットで配置すると、ブラウザ上でシートを切り替えられます。
6. HTML を Excel に戻す
保存した HTML を Excel ファイルとして読み込み直すこともできます。Workbook.LoadFromHtml() で HTML を読み込み、SaveToFile() で .xlsx として保存します。
import os
from spire.xls import *
workbook = Workbook()
workbook.LoadFromHtml("output/在庫表_画像埋め込み.html")
sheet = workbook.Worksheets[0]
sheet.Name = "在庫管理"
workbook.SaveToFile("output/HTMLから復元.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
print("保存しました: output/HTMLから復元.xlsx")
print("ファイルサイズ:", os.path.getsize("output/HTMLから復元.xlsx"), "bytes")
LoadFromHtml() で読み込んだワークブックは、HTML の表を 1 枚のワークシートとして保持します。シート名は sheet.Name で設定でき、ExcelVersion.Version2013 を指定して .xlsx として保存します。

HTML 内に埋め込んだロゴ画像も、復元したワークブックに取り込まれます。Web 上で更新した表を Excel に戻して編集する、といった運用にも使えます。
まとめ
Excel の表を HTML として公開し、必要に応じて Excel に戻す流れを、実際の出力とともに確認しました。用途ごとの API は次のとおりです。
| 変換 | API | ポイント |
|---|---|---|
| Excel → HTML(シート) | Worksheet.SaveToHtml() |
シート単位で HTML を保存する |
| Excel → HTML(ブック全体) | Workbook.SaveToHtml() |
シート切り替え付きの HTML を保存する |
| 画像の埋め込み | HTMLOptions.ImageEmbedded |
画像を HTML 内に埋め込む |
| HTML → Excel | Workbook.LoadFromHtml() |
HTML を読み込み .xlsx で保存する |
Excel を Web ページとして公開する場合と、Web の表を Excel で再利用する場合の両方に、同じライブラリで対応できます。ブック全体を変換するとシート切り替え付きの HTML になり、画像を埋め込んだシート単位の HTML は 1 ファイルで配布できます。
Excel を PDF に変換する方法は Python で Excel を PDF に変換する方法 で、Excel シートへの画像の挿入・削除は Python:Excel ワークシートに画像を挿入・削除する方法 で解説しています。
Spire.XLS for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。
8. FAQ
Microsoft Excel をインストールせずに Excel を HTML に変換できますか?
Excel のインストールは不要です。Spire.XLS for Python がシートを読み込み、HTML を出力します。
複数のシートを切り替えられる HTML にするにはどうすればよいですか?
Workbook.SaveToHtml() を使います。出力された HTML の下部にシート名のタブが表示され、クリックでシートを切り替えられます。
画像を含むシートを HTML に変換するにはどうすればよいですか?
HTMLOptions を作成し、ImageEmbedded = True を設定してから SaveToHtml() に渡します。画像が HTML 内に埋め込まれ、1 ファイルで配布できます。
HTML を Excel に戻すことはできますか?
はい。Workbook.LoadFromHtml() で HTML を読み込み、SaveToFile() で .xlsx として保存します。表の値、書式、埋め込み画像がワークブックに取り込まれます。
シート名を設定できますか?
はい。LoadFromHtml() で読み込んだ後に sheet.Name を設定すると、任意のシート名を付けられます。
保存した HTML を Web ページとしてそのまま公開できますか?
SaveToHtml() で出力した HTML は、表のスタイルを含む HTML ファイルです。画像を埋め込んだ設定で保存すると、HTML 1 つを配置するだけで表と画像を表示できます。
HTML から Excel に戻した表を編集できますか?
はい。.xlsx として保存した後は、Excel や対応する表計算ソフトで値の変更、数式の追加、書式の調整ができます。






