SVG は、図形や線、色を数式で表現するベクター形式の画像です。拡大・縮小しても輪郭がぼやけないため、Web ページの表やグラフを高精細に表示したい場面に向いています。
Excel の表やグラフを Web 用のベクター画像にしたいとき、SVG への書き出しが便利です。Spire.XLS for Python を使えば、ワークシートとグラフシートをそれぞれ SVG として保存できます。ここでは、表の SVG とグラフの SVG を実際の出力で確認します。
クイックナビゲーション
1. Excel を SVG にする流れ
Spire.XLS for Python では、変換する対象に応じて 2 つの API を使います。
| 変換対象 | 使用する API | 出力される内容 |
|---|---|---|
| ワークシート | Worksheet.ToSVGStream() |
セル、書式、罫線、画像を含む SVG |
| グラフシート | ChartSheet.ToSVGStream() |
グラフ全体の SVG |
どちらも Stream オブジェクトに SVG を書き出し、Flush() と Close() でファイルに保存します。ワークシートは行・列の範囲を指定でき、0 を指定するとシート全体が対象になります。
2. 用意するブックと実行環境
ライブラリのインストール
pip install spire.xls
スクリプトでは、必要なクラスを読み込みます。
from spire.xls import *
from spire.xls.common import Stream
import os
サンプルブック
今回は、用途に合わせて 2 つのブックを用意します。
| ファイル | 内容 | 用途 |
|---|---|---|
売上レポート.xlsx |
12 商品 × 4〜6 月の売上表(A1:D15) | ワークシートの SVG 変換 |
売上グラフ.xlsx |
売上表を基にした縦棒グラフのグラフシート「売上グラフ」 | グラフシートの SVG 変換 |
売上レポート.xlsx の表は、タイトル行、見出し行、12 行の明細で構成されています。売上グラフ.xlsx には、同じデータを基にした商品別売上のグラフシートが含まれています。
3. シートを SVG にする
ワークシート全体を SVG にする場合は、Worksheet.ToSVGStream() を使います。
import os
from spire.xls import *
from spire.xls.common import Stream
os.makedirs("output", exist_ok=True)
workbook = Workbook()
workbook.LoadFromFile("売上レポート.xlsx")
worksheet = workbook.Worksheets[0]
stream = Stream("output/WorksheetToSVG.svg")
worksheet.ToSVGStream(stream, 0, 0, 0, 0)
stream.Flush()
stream.Close()
workbook.Dispose()
print("保存しました: output/WorksheetToSVG.svg")
print("ファイルサイズ:", os.path.getsize("output/WorksheetToSVG.svg"), "bytes")
ToSVGStream() の引数は、開始行・開始列・終了行・終了列です。すべて 0 を指定すると、シート全体が SVG になります。範囲を絞りたい場合は、ToSVGStream(stream, 3, 1, 15, 4) のように行と列を指定します。
出力した SVG をブラウザで表示し、元の表と見比べたものが次の画像です。

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

SVG には、セルの文字、見出し行の背景色、罫線、列幅が反映されます。文字はテキスト要素として出力されるため、Web ページに貼り付けたときも拡大して読みやすく表示できます。
4. グラフシートを SVG にする
Excel のグラフシートは、シート全体が 1 つのグラフになっているシートです。Workbook.GetChartSheetByName() でグラフシートを取得し、ChartSheet.ToSVGStream() で SVG に変換します。
import os
from spire.xls import *
from spire.xls.common import Stream
workbook = Workbook()
workbook.LoadFromFile("売上グラフ.xlsx")
chart_sheet = workbook.GetChartSheetByName("売上グラフ")
stream = Stream("output/ChartSheetToSVG.svg")
chart_sheet.ToSVGStream(stream)
stream.Flush()
stream.Close()
workbook.Dispose()
print("保存しました: output/ChartSheetToSVG.svg")
print("ファイルサイズ:", os.path.getsize("output/ChartSheetToSVG.svg"), "bytes")
グラフシートの SVG には、グラフのタイトル、軸、凡例、棒グラフがベクター要素として出力されます。

ChartSheet.ToSVGStream() は範囲を指定せず、グラフシート全体を SVG にします。変換した SVG は、Web ページのグラフ表示や、プレゼン資料への貼り付けに利用できます。
まとめ
Excel の表とグラフを、それぞれ SVG として書き出す手順を確認しました。対象ごとの API は次のとおりです。
| 対象 | API | 出力 |
|---|---|---|
| ワークシート | Worksheet.ToSVGStream() |
シート全体、または指定範囲の SVG |
| グラフシート | ChartSheet.ToSVGStream() |
グラフ全体の SVG |
いずれも Stream に書き出した後、Flush() と Close() でファイルを確定します。
SVG は拡大しても劣化しないため、Web ページの表やグラフ、高解像度の資料に適しています。Excel の表とグラフを同じ形式で書き出せるため、データの見せ方を揃えたい場合にも便利です。
Excel を PDF に変換する方法は Python で Excel を PDF に変換する方法 で、Excel シートへの画像の挿入・削除は Python:Excel ワークシートに画像を挿入・削除する方法 で解説しています。
Spire.XLS for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。
6. FAQ
Microsoft Excel をインストールせずに Excel を SVG に変換できますか?
Spire.XLS for Python がブックを直接読み込むため、Excel アプリケーションは使いません。
ワークシートの一部だけを SVG にできますか?
はい。ToSVGStream(stream, 開始行, 開始列, 終了行, 終了列) のように範囲を指定します。すべて 0 を指定するとシート全体が対象になります。
グラフシートを SVG にするにはどうすればよいですか?
Workbook.GetChartSheetByName("シート名") でグラフシートを取得し、ChartSheet.ToSVGStream(stream) を呼び出します。
SVG は Web ページでそのまま使えますか?
SVG はブラウザで直接表示できる形式です。HTML に貼り付けるか、<img> タグの src に指定して読み込みます。
Excel のグラフを通常のワークシートから SVG にできますか?
グラフシートは ChartSheet.ToSVGStream()、ワークシートは Worksheet.ToSVGStream() を使います。変換したい対象に応じて使い分けてください。






