Диаграммы из Excel в PowerPoint с Python
У меня есть книга excel, которая создается с помощью отличного модуля "xlsxwriter". В этой книге около 200 встроенных диаграмм. Теперь я пытаюсь экспортировать все эти диаграммы в несколько презентаций power point. В идеале я хочу сохранить исходный формат и встроенные данные без ссылки на внешнюю рабочую книгу excel.
Я уверен, что есть способ сделать это с помощью VBA. Но мне было интересно, есть ли способ сделать это с помощью Python. Есть ли способ поставить объекты диаграммы xlsxwriter в powerpoints ?
Я посмотрел на python-pptx и не могу найти ничего о получении диаграмм или рядов данных из рабочей книги excel.
любая помощь приветствуется !
2 ответов
после нескольких часов попыток разных вещей я нашел решение этой проблемы. Надеюсь,это поможет кому-то сэкономить время.Следующий код скопирует все диаграммы из " workbook_with_charts.xlsx " to " Final_PowerPoint.рртх."
по какой-то причине, что я еще не понял, он работает лучше при запуске этой программы Python из терминала CMD. Иногда он ломается, если вы пытались запустить это несколько раз, даже если первый запуск обычно в порядке.
другая проблема заключается в том, что в пятой строке, если вы сделаете False, используя "presentation=PowerPoint.Представленные доклада.Добавить (False)," он не работает с Microsoft Office 2013, хотя "True" и "False" по-прежнему будут работать с Microsoft Office 2010.
было бы здорово, если бы кто-то мог прояснить эти два вопроса.
# importing the necessary libraries
import win32com.client
from win32com.client import constants
PowerPoint=win32com.client.Dispatch("PowerPoint.Application")
Excel=win32com.client.Dispatch("Excel.Application")
presentation=PowerPoint.Presentations.Add(True)
workbook=Excel.Workbooks.Open(Filename="C:\.........\workbook_with_charts.xlsx",ReadOnly=1,UpdateLinks=False)
for ws in workbook.Worksheets:
for chart in ws.ChartObjects():
# Copying all the charts from excel
chart.Activate()
chart.Copy()
Slide=presentation.Slides.Add(presentation.Slides.Count+1,constants.ppLayoutBlank)
Slide.Shapes.PasteSpecial(constants.ppPasteShape)
# WE are going to make the title of slide the same chart title
# This is optional
textbox=Slide.Shapes.AddTextbox(1,100,100,200,300)
textbox.TextFrame.TextRange.Text=str(chart.Chart.ChartTitle.Text)
presentation.SaveAs("C:\...........\Final_PowerPoint.pptx")
presentation.Close()
workbook.Close()
print 'Charts Finished Copying to Powerpoint Presentation'
Excel.Quit()
PowerPoint.Quit()
подход, к которому я был бы склонен с текущей версией python-pptx, заключается в чтении листов Excel для их данных и воссоздании диаграмм в python-pptx. Это, конечно, потребует знания того, что такое форматирование диаграммы и т. д. так что я понимаю, почему ты не хочешь этого делать.
импорт диаграмм непосредственно из Excel был сделан в прошлом, см. запрос pull здесь, на GitHub:https://github.com/scanny/python-pptx/pull/65
но это задействовано большое количество операций на python-pptx и много версий назад, поэтому в лучшем случае это может быть хорошим руководством к тому, какие стратегии могут работать. Вам нужно было бы хотеть этого довольно плохо, я полагаю, чтобы пойти по этому маршруту:)