チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.Presentation for .NET»保護»C#:PowerPoint プレゼンテーションを保護または保護解除する方法
2026-10-30

Python で Excel と HTML を相互変換する方法(画像埋め込み対応)

Excel の表を Web ページで公開したいとき、HTML に変換しておくと、閲覧者は Excel を開かずにブラウザ上で内容を確認できます。逆に、Web から取り込んだ表を Excel で編集したい場合は、HTML を Excel に戻すと書式を整えたり計算を追加したりできます。

Excel の表を Web で見せるための HTML 出力と、その HTML を再び Excel で扱うための読み込みを、Spire.XLS for Python で行います。ロゴ画像を 1 ファイルに埋め込む方法も取り上げます。

クイックナビゲーション


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 の在庫管理表と変換後の HTML ページの比較

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

Excel から HTML への変換を実行したときのコンソール出力

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 をブラウザで開くと、表の下に「在庫管理」「入庫履歴」「商品マスタ」のタブが表示されます。タブを選ぶと、対応するシートの内容に切り替わります。

ワークブック全体を 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 から復元した在庫管理表のデータ(A3:F15)

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 や対応する表計算ソフトで値の変更、数式の追加、書式の調整ができます。

Read 5 times