有没有办法用pythonpptx删除形状

2024-05-23 15:34:14 发布

您现在位置:Python中文网/ 问答频道 /正文

@scanny我查阅了python pptx文档,没有找到任何删除形状的方法。我看到的用例是根据次要条件更改演示文稿中的形状。是否有任何方法可以轻松做到这一点,或者是否有一种方法可以帮助构建此功能

谢谢你的帮助


Tags: 方法文档功能用例条件形状文稿pptx
2条回答

可以,而且它对简单的形状很有效,但由于形状可能与演示文稿中的其他对象有关系(“大致链接”),而让这些“悬空”可能会导致问题,因此它变得复杂

基本思想是使用lxml调用删除shape元素,如下所示:

sp = shape._sp             #  - get reference to XML element for shape  -
sp.getparent().remove(sp)  #  - remove that shape element from its tree  -

这是lxml.etree._Element的文档,它包含了python-pptx子类中的每个XML元素(因此具有所有这些方法)。 https://lxml.de/api/lxml.etree._Element-class.html

如果在尝试加载保存的.pptx文件时出现“修复”错误,您将知道出现了问题。简单的形状,如矩形和直线,应该是好的。图片、图表和可能带有超链接的形状可能会有问题,但很容易尝试,您可以看到它是否适用于您的情况

遗憾的是,当我试图删除一个形状时,scanny答案中的两行代码无法实现。可能是因为我不知道在使用“pptx”时如何使用lxml(如我认为lxml和“pptx”之间共享对象)。但他的答案启发我在操作xml时找到答案。我已经寻找了好一阵子答案。最后,我找到了删除形状的方法! 例如,我想删除形状序列的第一个形状,只需使用子代码:

shapes.element.remove(shapes[0].element)  

而且它有效! 谢谢@scanny,你做得很出色,这对我帮助很大

相关问题 更多 >