【问题标题】:AttributeError: 'Sheet' object has no attribute 'Shapes'AttributeError:“Sheet”对象没有属性“Shapes”
【发布时间】:2017-12-27 15:48:59
【问题描述】:

下面是我正在运行的代码。我想要达到的目标很简单。我需要从现有的 Excel 文件中复制图表并将其作为图表(非图像)粘贴到现有的 PowerPoint 幻灯片中。

但我总是得到错误

"AttributeError: 'Sheet' 对象没有属性 'Shapes'"

我应该安装任何软件包吗?

from pptx import Presentation
import xlrd
import math
import xlutils

import win32com.client
from win32com.client import constants

prs = Presentation('D:\Sruti K\Online_Retail\APAC\Office Slides\Office QBU Slides\FY17 Q4 June\Office Slides FY17 Q4 test.pptx')
title_slide_layout = prs.slide_layouts[3]
slide = prs.slides.add_slide(title_slide_layout)

book = xlrd.open_workbook(r'D:\Sruti K\Online_Retail\APAC\Office Slides\Office QBU Slides\FY17 Q4 June\Python Chart Paste.xlsx')
ws = book.sheet_by_index(0)

sheetsinbook=[book.sheet_by_index(0)]


for ws in sheetsinbook:
    for chart in ws.Shapes():
        chart.Activate()
        chart.Copy()
        slide.Shapes.PasteSpecial(constants.ppPasteShape)
        Print("hi")

prs.save(r'D:\Sruti K\Online_Retail\APAC\Office Slides\Office QBU Slides\FY17 Q4 June\Python Trial APAC PPT V1.pptx')

【问题讨论】:

    标签: python excel python-2.7


    【解决方案1】:

    问题是您将随机单词大写,这会改变它们的行为/调用方式。例如,您输入了 Print 而不是 print,除非您有一个名为 Print 的 class,否则这是无效的。如果您改用ws.shapes(),它应该可以工作(并且也不要大写其他一些词)。

    【讨论】:

    • 嗨,卡里!我已经这样做了,但我仍然遇到同样的错误。我正在使用 2.7.13 版本。会不会是因为这个?我也尝试过这里发布的代码:stackoverflow.com/questions/32639900/… 但这也会引发类似的错误。
    • 你试过for chart in ws.ChartObjects吗?
    • 嘿,凯瑞! AttributeError: 'Sheet' 对象没有属性 'ChartObjects' 是我在这里看到的。 :(
    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 2021-04-19
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多