繁体   English   中英

Python PPTX 调整现有多图图表中的 XML 值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM