如何解决使用Python PPTX将数据表添加到折线图中
我已收到创建折线图的请求,该折线图包括带有图例的自动生成的数据表。目前在PowerPoint中是可能的:
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 举报,一经查实,本站将立刻删除。