2016-06-05 1 views
0

Je tente d'enregistrer le graphique à partir d'Excel en tant que fichier image en Python. J'utilise WIn32com, le graphique est exporté comme requis mais quand j'essaye de supprimer l'ActiveSheet, il me donne l'erreur.Erreur lors de la suppression de la feuille Excel après l'exportation à l'aide de python

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) 

Une aide pour résoudre cette erreur?

Ci-dessous mon code:

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

Je pris le code de Export Charts from Excel as images using Python

Mis à jour le code, qui a travaillé

Répondre

0

Est-ActiveSheet un champ, comme vous utilisez ici:

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

Ou une méthode comme si vous l'utilisiez e:

excel.ActiveSheet().Delete() 

Depuis le premier appel ne vous donne pas l'erreur, et l'erreur indique que le membre ne se trouve pas, je vais deviner que le second est faux, et devrait être:

excel.ActiveSheet.Delete() 
+0

Merci, ça a marché – thebadguy