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

使用Python PPTX将数据表添加到折线图中

如何解决使用Python PPTX将数据表添加到折线图中

我已收到创建折线图的请求,该折线图包括带有图例的自动生成的数据表。目前在PowerPoint中是可能的:

PowerPoint Screenshot

PowerPoint Chart

Scanny确认不支持功能,因此现在我尝试直接插入XML。这是我需要插入的内容

<c:dTable><c:showHorzBorder val="1"/><c:showVertBorder val="1"/><c:showOutline val="1"/><c:showKeys val="1"/></c:dTable>

它恰好在结束标记:plotArea>之前。我已经找到了如何在更详细的细节上编辑XML的方法,但是在此位置插入新的东西是新的东西。

解决方法

也许您想考虑使用COM,那么可以使用带有Chart的模板pptx,其中图例中已启用了数据表。然后,只需替换数据即可,并且当您刷新图表时,图例也会自动更新。更新xml对我来说似乎是一项艰巨的任务:)。或者(您仍然需要带有图表的模板,其中启用了带有数据表的图例选项->您可以替换python-pptx中的数据,但是我几乎可以确定您需要刷新图表以使图例被更新)

,

好吧,因此在进行了广泛的搜索之后,我发现了一个question about changing the size of the plot area,它正在我所寻找的范围内访问XML。这有助于更好地了解我需要做什么。基于该解决方案,我在代码中添加了以下代码,该代码在调用时可以正常工作!

定义图表:

graphic_frame = placeholder.insert_chart(v.charttypelist[intendedchart],chart_data)
chart = graphic_frame.chart

方法:

def SubElement(parent,tagname,**kwargs):
    element = OxmlElement(tagname)
    element.attrib.update(kwargs)
    parent.append(element)
    return element

def add_table_line_graph(chart):
    plotArea = chart._element.chart.plotArea
    SubElement(plotArea,'c:dTable') # Add data table tag
    dataTable = chart._element.chart.plotArea.dTable
    # Add values to data table tag
    for sub in ['c:showHorzBorder','c:showVertBorder','c:showOutline','c:showKeys']:
        SubElement(dataTable,sub,val='1')

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