微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法用python-pptx删除形状

如何解决有没有办法用python-pptx删除形状

@scanny我浏览了python-pptx文档,但未找到删除形状的任何方法。我正在查看的用例正在根据辅助条件更改演示文稿中存在的形状。有什么方法可以轻松地做到这一点,或者有什么方法可以帮助我构建此功能

感谢帮助。

解决方法

您可以,它对于简单的形状也可以很好地工作,但是由于形状可能与演示文稿中的其他对象具有关系(粗略地“链接”),而使这些“悬空”的关系可能引起问题,因此使情况变得复杂。 / p>

基本思想是使用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,你做得非常出色,对我帮助很大!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。