Я хочу обновить данные диаграммы для моего существующего слайда презентации PowerPoint, имея 2 диаграммы, а именно гистограмму и круговую диаграмму. Я успешно могу обновить гистограмму, так как она была первым элементом моего заполнителя слайда с контентом. Теперь я не уверен, как обновить вторую диаграмму, т.е. круговую диаграмму на том же слайде. Мой код выглядит следующим образом:
prs = Presentation("Request_Slide.pptx")
slide = prs.slides[0]
for shape in slide.placeholders:
print('%d %s' %(shape.placeholder_format.idx, shape.name))
с выше я получил ответ ниже:
0 Title 1
1 Content Placeholder 5
С помощью этого мне удалось перейти к моей первой диаграмме на слайде [0] и обновить данные ее диаграммы, однако я изо всех сил пытаюсь перейти ко второй диаграмме, присутствующей в заполнителе содержимого. Любые предложения будут иметь большую помощь и спасибо заранее.
@Scanny: С помощью Slide.shapes я получил все фигуры, но обнаружил, что не могу получить доступ к индексу фигур, как показано ниже: prs = Presentation("A-Sample_slide.pptx") slide1 = prs.slides[0 ] для формы в slide1.shapes: print('%d %s' % (prs.slides.index(shape), shape.name)) Вместо этого я получил сообщение об ошибке, например: " поднять ValueError('%s не на слайде коллекция' % слайд) ValueError: <pptx.shapes.graphfrm.GraphicFrame объект по адресу 0x0000019943E14308> не находится в коллекции слайдов"
Удалось решить, используя список индекса имени формы и используя индекс формы для обновления данных диаграммы, используя приведенный ниже код:
list_shape_names = [shape.name for shape in slide.shapes]
if shape_name not in list_shape_names:
shape_index = None
else:
shape_index = list_shape_names.index(shape_name)
Но будьте осторожны при передаче shape_name, поскольку оно будет чувствительно к регистру.
Заполнитель — это просто особая категория фигур, и не все фигуры являются заполнителями. Попробуйте вместо этого использовать
for shape in slide.shapes
и посмотрите, как вы сможете таким образом идентифицировать вторую диаграмму. Возможно, вторая диаграмма была добавлена как отдельная «отдельно стоящая» форма. Насколько мне известно, заполнитель не может напрямую содержать две диаграммы.