【问题标题】:Error in deleting excel sheet after exporting using python使用python导出后删除excel表时出错
【发布时间】:2016-06-05 09:19:27
【问题描述】:

我正在尝试将 Excel 中的图表保存为 Python 中的图像文件。我正在使用 WIn32com,图表正在按要求导出,但是当我尝试删除 ActiveSheet 时,它给了我错误。

excel.ActiveSheet().Delete()
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 192, in __call__
    return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None)
pywintypes.com_error: (-2147352573, 'Member not found.', None, None)

对克服这个错误有什么帮助吗?

下面是我的代码:

import win32com.client as win32

def saveChart():
    excel = win32.Dispatch("Excel.Application")
    wb = excel.Workbooks.Open(r'C:\Users\projects\Rating.xlsx')
    selection = "A1:K16"
    xl_range = wb.Sheets("Categories").Range(selection)
    excel.ActiveWorkbook.Sheets.Add().Name="image_sheet"
    cht = excel.ActiveSheet.ChartObjects().Add(0,0,xl_range.Width, xl_range.Height)
    xl_range.CopyPicture()
    cht.Chart.Paste()
    cht.Chart.Export(r'C:\Users\projects\MyExportedChart.png')
    excel.DisplayAlerts = False
    cht.Delete()
    excel.ActiveSheet.Delete()

    excel.DisplayAlerts = True
    excel.ActiveWorkbook.Close()

我从Export Charts from Excel as images using Python获取代码

更新了代码,成功了

【问题讨论】:

    标签: python windows excel winapi win32com


    【解决方案1】:

    ActiveSheet 是一个字段吗,就像您在这里使用的一样:

    cht = excel.ActiveSheet.ChartObjects().Add(0,0,xl_range.Width, xl_range.Height)
    

    或者像你在这里使用的方法:

    excel.ActiveSheet().Delete()
    

    由于第一次调用没有给你错误,并且错误说找不到成员,我猜测第二个是错误的,应该是:

    excel.ActiveSheet.Delete()
    

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多