2017-01-05 2 views
0

Это работало на прошлой неделе, но по какой-то причине оно перестало работать сегодня, возможно, из-за нового года?win32com Excel.Application больше не может открывать документы

def remove_strikethroughs(xlsx): 
    excel = win32com.client.Dispatch('Excel.Application') 

    xl = pd.ExcelFile(xlsx) 
    sheet_names = xl.sheet_names 
    for sheet in sheet_names: 
     if any(tab in sheet for tab in tabs_used): 
      #print (sheet) 

      wb = excel.Workbooks.Open(xlsx) 
      ws = wb.WorkSheets(sheet) 
      for cell in ws.Range('A5:B150'): 
       if cell.Font.Strikethrough == True: 
        cell.value = '[MDU]' + str(cell) 
      wb.Save() 
      wb.Close() 
    excel.Visible = True 
    excel.DisplayAlerts = True 
    excel.Application.Quit() 

Я получаю следующее сообщение об ошибке:

"AttributeError: '<win32com.gen_py.Microsoft Excel 15.0 Object Library.Workbooks instance at 0x20920640>' object has no attribute 'open'" 

Может кто-то пожалуйста, помогите?

Спасибо!

+0

Нет звонка в нижний регистр «открыть» в любом месте, вы уверены, что разместили код, который используете? – Schollii

ответ

0

Нет open метод, это Open. Python чувствителен к регистру :)

+0

Привет, это работало на прошлой неделе с «открытым», после того как я изменил его на «Открыть», он имеет это сообщение об ошибке: AttributeError: '' object has no attribute 'WorkSheets' –

+1

@AndyDo: это, вероятно, потому, что атрибут называется 'Worksheets', а не' WorkSheets'. См. Https://msdn.microsoft.com/en-us/library/office/ff835542.aspx. –

+0

@AndyDo, это точно такая же ошибка. Помните, ** python чувствителен к регистру **, поэтому 'WorkSheets! = Worksheets'. –

0

Как ни странно, я столкнулся с тем же вопросом, что и @AndyDo. Код, который я изначально использовал для доступа к приложению Excel, перестает работать.

Original (нерабочий):

** Примечания - Это ясно, что я не соответствую случаю из примера я использовал. Однако я не уверен, почему код работал без ошибок ранее.

Источник: How to open a password protected excel file using python?

import win32com.client as w3c 

xlapp = w3c.Dispatch('Excel.Application') 
xlwb = xlapp.Workbooks.open(file.xlsx, False, True, None, file_password) 
xlsheet = xlwb.WorkSheets('my_sheet_name') 

Затем я обновил случай, как показано в коде ниже, чтобы исправить ошибки атрибутов.

Revised (рабочий):

Источник - Python Excel Mini Cookbook

import win32com.client as w3c 

xlapp = w3c.gencache.EnsureDispatch('Excel.Application') 
xlwb = xlapp.Workbooks.Open(file.xlsx, False, True, None, file_password) 
xlsheet = xlwb.Worksheets('my_sheet_name') 

мне интересно, если еще одна открытая книга, в которой была активирована формула бар влияет на проблему. Мне нужно будет больше расследовать.