[英]Python PPTX adjust XML values in existing multi-plot chart
我正在尝试使用 python-pptx 库(版本:0.6.19)调整现有 pptx 中现有的多图(条形图和折线图)。
我已经尝试使用 pptx 库创建它,但是用于创建这些多图的 api 尚不存在。 Chart.replace_data()
function 也不适用于多图,因此我试图通过 XML 对其进行调整。 该图始终完全相同,只是具有不同的值。
这是我当前的代码:
from pptx import Presentation
prs = Presentation('Presentation1.pptx')
slide = prs.slides[0]
chart = slide.shapes[1].chart
print(chart.plots[1].series[0].values)
我可以通过打印 function 查看图表的值,但通过值 function 对其进行调整会返回不支持项目分配的 TypeError。
目前我无法访问 XML 值。 我尝试了以下方法:
chart.plots[1].series[0]._element.xpath(r"c:val")
但它没有返回值。 我收到消息 TypeError: cannot unpack non-iterable NonType object。 我错过了什么,如何调整这些值? 对不起,如果这对你来说很明显,但我对 pptx 和 XML 还是很陌生。
这是 XML 文件中的相关片段。 对 Excel 的引用对我来说并不重要:
<c:val>
<c:numRef>
<c:f>ChartDeveloper!$C$68:$H$68</c:f>
<c:numCache>
<c:formatCode>0.0%</c:formatCode>
<c:ptCount val="6"/>
<c:pt idx="0">
<c:v>0.23</c:v>
</c:pt>
<c:pt idx="1">
<c:v>0.22</c:v>
</c:pt>
<c:pt idx="2">
<c:v>0.22</c:v>
</c:pt>
<c:pt idx="3">
<c:v>0.2</c:v>
</c:pt>
<c:pt idx="4">
<c:v>0.18</c:v>
</c:pt>
<c:pt idx="5">
<c:v>0.16</c:v>
</c:pt>
</c:numCache>
</c:numRef>
</c:val>
非常感谢!
好吧,我自己想通了。 这是任何可能需要它的人的代码。 使用带有虚拟多图的模板通过 python pptx 库创建多图也是一个很好的解决方法(如果尺寸保持不变):
prs = Presentation('Presentation1.pptx')
slide = prs.slides[0]
for el in slide.shapes[1].chart.plots[0].series[0]._element.xpath("c:val/c:numRef/c:numCache/c:pt/c:v"):
print(el.text)
el.text = "0.3"
prs.save('xmlDummy.pptx')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.