PowerPoint の SmartArt は、情報や概念を表現するための視覚的に魅力的な図表、チャート、グラフィックを作成できる便利なツールです。プレーンなテキストを視覚に訴えるビジュアルへとすばやく簡単に変換できるため、聴衆が提示された情報を理解し、記憶に留めやすくなります。
Spire.Presentation for Python を使用すると、開発者は数行のコードで PowerPoint の SmartArt を作成・読み取り・削除できます。本記事では、SmartArt グラフィックの作成、ノードとサブノードの追加、SmartArt からのテキスト抽出、SmartArt の削除方法を紹介します。
クイックナビゲーション
- 2. Python で PowerPoint に SmartArt を作成
- 3. Python で PowerPoint の SmartArt を読み取り
- 4. Python で PowerPoint から SmartArt を削除
1. Spire.Presentation for Python のインストール
このシナリオには Spire.Presentation for Python と plum-dispatch v1.7.4 が必要です。pip を介してインストールします。
pip install Spire.Presentation
Python スクリプトで必要なモジュールをインポートします。
from spire.presentation.common import *
from spire.presentation import *
または、Spire.Presentation for Python のダウンロードページ から手動でライブラリをインストールすることもできます。
2. Python で PowerPoint に SmartArt を作成
Spire.Presentation for Python は、ISlide.Shapes.AppendSmartArt() メソッドを提供しており、PowerPoint プレゼンテーションの特定のスライドに SmartArt グラフィックを追加できます。次の例では、組織図タイプの SmartArt を作成し、デフォルトノードを削除した後、ノードとサブノードを追加して各ノードにテキストとフォントサイズを設定する方法を示します。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# 最初のスライドを取得
slide = presentation.Slides[0]
# スライドに SmartArt(組織図)を追加
smartArt = slide.Shapes.AppendSmartArt(200, 60, 500, 430, SmartArtLayoutType.OrganizationChart)
# SmartArt のスタイルと色を設定
smartArt.Style = SmartArtStyleType.ModerateEffect
smartArt.ColorStyle = SmartArtColorType.ColorfulAccentColors5to6
# SmartArt のデフォルトノードを削除
list = []
for node in smartArt.Nodes:
list.append(node)
for subnode in list:
smartArt.Nodes.RemoveNode(subnode)
# SmartArt にノードを追加
node = smartArt.Nodes.AddNode()
# ノードに 2 つのサブノードを追加
subNode1 = node.ChildNodes.AddNode()
subNode2 = node.ChildNodes.AddNode()
# 最初のサブノードに 2 つのサブノードを追加
subsubNode1 = subNode1.ChildNodes.AddNode()
subsubNode2 = subNode1.ChildNodes.AddNode()
# 2 番目のサブノードに 2 つのサブノードを追加
subsubNode3 = subNode2.ChildNodes.AddNode()
subsubNode4 = subNode2.ChildNodes.AddNode()
# ノードとサブノードにテキストとフォントサイズを設定
node.TextFrame.Text = "社長"
node.TextFrame.TextRange.FontHeight = 14.0
subNode1.TextFrame.Text = "開発マネージャー"
subNode1.TextFrame.TextRange.FontHeight = 12.0
subNode2.TextFrame.Text = "品質保証マネージャー"
subNode2.TextFrame.TextRange.FontHeight = 12.0
subsubNode1.TextFrame.Text = "開発者A"
subsubNode1.TextFrame.TextRange.FontHeight = 12.0
subsubNode2.TextFrame.Text = "開発者B"
subsubNode2.TextFrame.TextRange.FontHeight = 12.0
subsubNode3.TextFrame.Text = "テスターA"
subsubNode3.TextFrame.TextRange.FontHeight = 12.0
subsubNode4.TextFrame.Text = "テスターB"
subsubNode4.TextFrame.TextRange.FontHeight = 12.0
# 結果のプレゼンテーションを保存
presentation.SaveToFile("InsertSmartArt.pptx", FileFormat.Pptx2016)
presentation.Dispose()

3. Python で PowerPoint の SmartArt を読み取り
PowerPoint スライド上の SmartArt グラフィックのテキストを読み取るには、スライド上の SmartArt シェイプを検索し、各 SmartArt シェイプのすべてのノードをループ処理して、ISmartArtNode.TextFrame.Text プロパティを使用して各ノードのテキストを取得します。次の例は、SmartArt から抽出したテキストをテキストファイルに書き込む方法を示しています。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# PowerPoint プレゼンテーションを読み込む
presentation.LoadFromFile("InsertSmartArt.pptx")
# 最初のスライドを取得
slide = presentation.Slides[0]
# 抽出したテキストを保存するリストを作成
str = []
str.append("SmartArt から抽出したテキスト:")
# スライド上のシェイプをループ処理し、SmartArt シェイプを検索
for shape in slide.Shapes:
if isinstance(shape, ISmartArt):
smartArt = shape
# SmartArt シェイプからテキストを抽出してリストに追加
for node in smartArt.Nodes:
str.append(node.TextFrame.Text)
# リスト内のテキストをテキストファイルに書き込む
with open("ExtractTextFromSmartArt.txt", "w", encoding = "utf-8") as text_file:
for text in str:
text_file.write(text + "\n")
presentation.Dispose()

4. Python で PowerPoint から SmartArt を削除
PowerPoint スライドから SmartArt グラフィックを削除するには、スライド上のすべてのシェイプをループ処理して SmartArt シェイプを検索し、ISlide.Shapes.Remove() メソッドを使用してスライドから削除します。
from spire.presentation.common import *
from spire.presentation import *
# Presentation オブジェクトを作成
presentation = Presentation()
# PowerPoint プレゼンテーションを読み込む
presentation.LoadFromFile("InsertSmartArt.pptx")
# 最初のスライドを取得
slide = presentation.Slides[0]
# SmartArt シェイプを保存するリストを作成
list = []
# スライド上のすべてのシェイプをループ処理
for shape in slide.Shapes:
# SmartArt シェイプを検索してリストに追加
if isinstance (shape, ISmartArt):
list.append(shape)
# スライドから SmartArt を削除
for smartArt in list:
slide.Shapes.Remove(smartArt)
# 結果のプレゼンテーションを保存
presentation.SaveToFile("DeleteSmartArt.pptx", FileFormat.Pptx2016)
presentation.Dispose()
まとめ
本記事では、Spire.Presentation for Python を使用して Python で PowerPoint の SmartArt を作成・読み取り・削除する方法を実証しました。ISlide.Shapes.AppendSmartArt() メソッドで SmartArt を作成し、ISmartArtNode.TextFrame.Text プロパティでノードのテキストを抽出し、ISlide.Shapes.Remove() メソッドで SmartArt を削除できます。これらの機能は、組織図やフローチャートの自動生成、プレゼンテーションのコンテンツ管理、SmartArt の一括更新などの自動化シナリオに役立ちます。
Spire.Presentation for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。
6. FAQ
Microsoft PowerPoint をインストールせずに SmartArt を作成できますか?
はい。Spire.Presentation はスタンドアロンのライブラリであり、Microsoft Office や PowerPoint をインストールする必要はありません。
どの SmartArt レイアウトタイプがサポートされていますか?
SmartArtLayoutType 列挙型は、組織図をはじめとする多数のレイアウトタイプを提供しています。使用するレイアウトは、AppendSmartArt() メソッドのパラメータで指定できます。
SmartArt のスタイルや配色を変更できますか?
はい。ISmartArt.Style プロパティでスタイルを、ISmartArt.ColorStyle プロパティで配色を設定できます。
SmartArt のテキストを読み取るにはどうすればよいですか?
スライド上のシェイプをループ処理して ISmartArt 型のシェイプを検索し、各ノードの ISmartArtNode.TextFrame.Text プロパティからテキストを取得します。






