win32com Excel。应用程序无法打开任何文档

2024-03-28 13:55:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这是上周的工作,但由于某种原因,它今天停止工作,也许是因为新年?

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'"

有人能帮忙吗?

谢谢!


Tags: intrueforifapplicationnamescellxlsx
3条回答

奇怪的是,我遇到了和@AndyDo同样的问题。我最初用来访问Excel应用程序的代码停止工作。

原件(非工作):

** 注意-很明显我用的例子和case不匹配。但是,我不知道为什么以前的代码没有错误。

来源: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')

然后,我更新了下面代码中的案例,以纠正属性错误。

修订(工作):

来源-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')

我想知道激活了公式栏的另一个打开的工作簿是否会影响此问题。我得做更多的调查。

没有open方法,它是Open。Python区分大小写:)

当代码第一次运行得很好时,我来寻找这个错误,但是当我再次运行它时抛出了一个异常“AttributeError:Excel.Application.Workbooks”。

这不是一个技术解决方案,这只是一个愚蠢的(这是很常见的)过滤器。

我在后台打开了一个Excel文件,代码关闭了Excel应用程序(当然,我们应该只关闭工作簿)。当Excel关闭时,我打开的文件的后台会弹出保存对话框。当我再次运行相同的代码时,Excel应用程序成了一个问题,因为它还没有从Python中发布。

也许,只是也许,你也在做类似的事情。高五!!你不是唯一一个!

相关问题 更多 >