チュートリアル

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

チュートリアル».NET»Spire.PDF for .NET
2026-11-04

Python で Excel を SVG に変換する方法(ワークシート・グラフシート)

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 の売上表と変換後の SVG の比較

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

ワークシートの SVG 変換を実行したときのコンソール出力

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 には、グラフのタイトル、軸、凡例、棒グラフがベクター要素として出力されます。

グラフシートを 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() を使います。変換したい対象に応じて使い分けてください。

Read 4 times