如何打印 Python-pptx 中的所有图表属性

How to print all the chart properties in Python-pptx

我在 pptx 文件中有一个现有图表,我只想每天更新它的值,这些图表已经从 excel 绘制并粘贴到 pptx 中,我只想修改图表,

但我不知道图表中有多少属性,如系列、类别和标题属性。

我能够打印图表系列和类别数据,但是当我用 chart.replace_data(chart_data) 修改这些时 我收到如下错误

return self._chart_part.related_parts[xlsx_part_rId]
KeyError: 'rId4'

我将使用下面的代码打印值,

for series in chart.plots:
    for i in series.categories:
        cat_list.append(i)
for series in chart.series:
    for value in series.values:
        ser_list.append(value)

图表如下所示

我如何使用将从 excel 传递到 pptx 的更新值修改此类图表。

我怀疑问题出在 "pasting from Excel" 步骤。

您可以尝试的一件事是在图表上 right-click 并选择 "Edit values in Excel"。如果出于任何原因这不起作用,那将解释您所看到的错误。如果确实有效,请尝试保存并 运行 python-pptx 代码与保存的版本相对应。

另一种可能更可靠的解决方法是在 PowerPoint 中以本地方式重新创建图表,从添加新的 column-chart 开始并对其进行调整,直到获得此处显示的内容。然后你应该能够每天用你提到的代码更新它(尽管你的 ser_list 变量会累积图表中 all 系列的值,如果有多个).

要理解为什么会发生这种情况,重要的是要观察到 图表不一定要有 Excel 工作表 "behind" 它 。它可以,也许在这种粘贴情况下确实具有嵌入图表 XML 本身的固定文字值。 up-side 是粘贴操作不需要创建整个 Excel 电子表格,这在 cut-and-paste 上下文中可能很棘手。 down-side 是无法使用标准方法方便地更改值。

我最近没有尝试使用其中一个,所以我不知道编辑和保存数据是否会添加一个新的 Excel 从嵌入值创建的对象,但这可以解释您看到的行为。