簡體   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