Charts from Excel to PowerPoint with Python

后端 未结 3 1327
盖世英雄少女心
盖世英雄少女心 2020-12-14 23:53

I have an excel workbook that is created using an excellent \"xlsxwriter\" module. In this workbook, there about about 200 embedded charts. I am now trying to export all tho

3条回答
  •  醉酒成梦
    2020-12-15 00:30

    After spending hours of trying different things, I have found the solution to this problem. Hopefully,it will help someone save some time.The following code will copy all the charts from "workbook_with_charts.xlsx" to "Final_PowerPoint.pptx."

    For some reason, that I am yet to understand, it works better when running this Python program from CMD terminal. It sometimes breaks down if you tried to run this several times, even though the first run is usually OK.

    Another issue is that in the fifth line, if you make False using "presentation=PowerPoint.Presentations.Add(False)," it does not work with Microsoft Office 2013, even though both "True" and "False" will still work with Microsoft Office 2010.

    It would be great if someone can clarify these about two issues.

    # 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()
    

提交回复
热议问题