Как скопировать диаграмму из Excel и вставить ее как диаграмму в PowerPoint (не изображение), используя python - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть файл Excel, который генерирует диаграмму на основе доступных данных, имя диаграммы - thisChart.

Я хочу скопировать thisChart из файла Excel в файл ppt. Теперь я знаю 2 способа сделать это ie VBA и python (используя win32com.client). Проблема с VBA заключается в том, что он действительно отнимает много времени, и он случайно вылетает из-за необходимости постоянного наблюдения, поэтому я планировал сделать то же самое, используя python.

. После исследования я обнаружил около win32com.client в python, что позволил мне сделать то же самое.

Я использовал для этого следующий скрипт:


# Grab the Active Instance of Excel.
ExcelApp = win32com.client.GetActiveObject("Excel.Application")
ExcelApp.Visible = True

# Grab the workbook with the charts.
xlWorkbook = ExcelApp.Workbooks.Open(r'C:\Users\prashant.kumar\Desktop\testxl.xlsx')

# Create a new instance of PowerPoint and make sure it's visible.
PPTApp = win32com.client.gencache.EnsureDispatch("PowerPoint.Application")
PPTApp.Visible = True

# Add a presentation to the PowerPoint Application, returns a Presentation Object.
PPTPresentation = PPTApp.Presentations.Add()

# Loop through each Worksheet.
for xlWorksheet in xlWorkbook.Worksheets:

    # Grab the ChartObjects Collection for each sheet.
    xlCharts = xlWorksheet.ChartObjects()

    # Loop through each Chart in the ChartObjects Collection.
    for index, xlChart in enumerate(xlCharts):
        # Each chart needs to be on it's own slide, so at this point create a new slide.
        PPTSlide = PPTPresentation.Slides.Add(Index=index + 1, Layout=12)  # 12 is a blank layout

        # Display something to the user.
        print('Exporting Chart {} from Worksheet {}'.format(xlChart.Name, xlWorksheet.Name))

        # Copy the chart.
        xlChart.Copy()

        # Paste the Object to the Slide
        PPTSlide.Shapes.PasteSpecial(DataType=1)

    # Save the presentation.
PPTPresentation.SaveAs(r"C:\Users\prashant.kumar\Desktop\outppt")

, но он вставляет диаграмму как изображение, тогда как я хочу, чтобы диаграмма была вставлена ​​как интерактивная диаграмма (просто так, как в файле Excel)

Причина в том, что качество ухудшается, и это не дает мне большой гибкости, чтобы при необходимости добавлять незначительные изменения в график в ppt в будущем.

Вот сравнение двух выходов

enter image description here

Разница в качестве видна здесь, и она ухудшается при увеличении масштаба.

Теперь мой вопрос: есть ли способ вставить диаграмму из Excel в ppt в формате диаграммы, используя python или любым другим способом, который быстрее, чем VBA?

PS. Я не хочу читать данные из файла Excel и генерировать диаграмму в python, а затем вставлять ее в PPT, поскольку реальные диаграммы действительно сложны и, вероятно, будет очень трудно создать

...