Microsoft PowerPoint 中的 SmartArt 是一个非常有用的工具,它允许用户创建视觉吸引人的图表和图形来表达信息和概念。通过将普通文本转化为视觉上引人注目的图像,SmartArt 为观众提供了一种快速简便的方式,使他们更容易理解和记忆所呈现的信息。在本文中,我们将演示如何使用 Spire.Presentation for Python 在 Python 中创建、读取和删除 PowerPoint 中的 SmartArt。
安装 Spire.Presentation for Python
本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Presentation for Python
Python 在 PowerPoint 中创建 SmartArt
Spire.Presentation for Python 提供了 ISlide.Shapes.AppendSmartArt() 方法来为 PowerPoint 中的特定幻灯片添加 SmartArt 图形。详细步骤如下:
- 创建一个 Presentation 类的对象。
- 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 演示文稿。
- 使用 Presentation.Slide[index] 属性获取该演示文稿中的特定幻灯片。
- 使用 ISlide.Shapes.AppendSmartArt() 方法插入 SmartArt 图形到该幻灯片。
- 使用 ISmartArt.Style 和 ISmartArt.ColorStyle 属性给 SmartArt 图形设置样式和颜色。
- 遍历该 SmartArt 中的所有默认节点,并使用 ISmartArt.Nodes.RemoveNode() 方法删除它们。
- 使用 ISmartArt.Nodes.AddNode() 方法添加一个节点到SmartArt。
- 使用 ISmartArtNode.ChildNodes.AddNode() 为刚加的节点添加两个子节点。
- 使用 ISmartArtNode.ChildNodes.AddNode() 方法分别为以上两个子节点添加两个子节点。
- 使用 ISmartArtNode.TextFrame.Text 属性为 SmartArt 的节点和子节点添加文本内容,然后使用 ISmartArtNode.TextFrame.TextRange.FontHeight 属性设置文本的字体大小。
- 使用 Presentation.SaveToFile() 方法保存结果文档。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 创建Presentation类的对象
presentation = Presentation()
# 加载PowerPoint演示文稿
presentation.LoadFromFile("Sample.pptx")
# 获取第一张幻灯片
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()
# 给刚加的节点添加两个子节点
subNode1 = node.ChildNodes.AddNode()
subNode2 = node.ChildNodes.AddNode()
# 给第一个子节点添加两个子节点
subsubNode1 = subNode1.ChildNodes.AddNode()
subsubNode2 = subNode1.ChildNodes.AddNode()
# 给第二个子节点添加两个子节点
subsubNode3 = subNode2.ChildNodes.AddNode()
subsubNode4 = subNode2.ChildNodes.AddNode()
# 为SmartArt中的节点和子节点设置文本内容和文本的字体大小
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("创建SmartArt.pptx", FileFormat.Pptx2016)
presentation.Dispose()
Python 读取 PowerPoint 中的 SmartArt
要读取 PowerPoint 幻灯片上 SmartArt 图形的内容,你需要找到幻灯片上的所有 SmartArt 形状,然后遍历每个 SmartArt 形状的所有节点,并通过 ISmartArtNode.TextFrame.Text 属性获取每个节点的文本。具体步骤如下:
- 创建一个 Presentation 类的对象。
- 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 演示文稿。
- 使用 Presentation.Slides[index] 属性获取特定幻灯片。
- 创建一个列表来存储提取的文本。
- 遍历幻灯片上的所有形状。
- 检查形状是否为 ISmartArt 类型。如果结果为 True,则遍历每个 SmartArt 形状的所有节点,然后通过 ISmartArtNode.TextFrame.Text 属性获取每个节点的文本,并将文本追加到列表中。
- 将列表中的文本写入文本文件中。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 创建Presentation类的对象
presentation = Presentation()
# 加载PowerPoint演示文稿
presentation.LoadFromFile("创建SmartArt.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("SmartArt文本.txt", "w", encoding = "utf-8") as text_file:
for text in str:
text_file.write(text + "\n")
presentation.Dispose()
Python 删除 PowerPoint中 的 SmartArt
要从 PowerPoint 幻灯片中删除 SmartArt 图形,你需要遍历幻灯片上的所有形状,找到 SmartArt 形状,然后使用 ISlide.Shapes.Remove() 方法从幻灯片中删除它们。具体步骤如下:
- 创建一个 Presentation 类的对象。
- 使用 Presentation.LoadFromFile() 方法加载 PowerPoint 演示文稿。
- 使用 Presentation.Slides[index] 属性获取特定幻灯片。
- 创建一个列表来存储 SmartArt 形状。
- 遍历幻灯片上的所有形状。
- 检查形状是否为 ISmartArt 类型。如果结果为 True,则将其追加到列表中。
- 遍历列表中的 SmartArt 形状,然后使用 ISlide.Shapes.Remove() 方法逐个从幻灯片中删除它们。
- 使用 Presentation.SaveToFile() 方法保存结果文档。
- Python
from spire.presentation.common import *
from spire.presentation import *
# 创建Presentation类的对象
presentation = Presentation()
# 加载PowerPoint演示文稿
presentation.LoadFromFile("创建SmartArt.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("删除SmartArt.pptx", FileFormat.Pptx2016)
presentation.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。