使用python处理excel时出错

而我的脚本正在更新一个Excel的同时,如果我要去做任何其他工作手动与另一个Excel错误发生我使用调度

from win32com.client import Dispatch excel = Dispatch('Excel.Application') excel.Visible = True file_name="file_name.xls" workbook = excel.Workbooks.Open(file_name) workBook = excel.ActiveWorkbook sheet=workbook.Sheets(sheetno) 

我geting像这样的错误(,com_error(-2147418111,'被拒绝被叫',无,无)

是否有任何方法可以克服它..我可以更新另一个Excel没有geting错误..

发生此错误是因为您正在调用的COM对象将拒绝外部调用,如果它已经处理另一个操作。 没有asynchronous处理的调用,行为可以看起来是随机的。

根据操作,您将看到pythoncom.com_error或pywintypes.com_error。 解决这个问题的一个简单的(如果不够好的)方法是用try-except将你的调用包装到COM对象中,如果你得到这些访问错误之一,请重试你的调用。

对于某些背景,请参阅Mark Hammond和Andy Robinson(O'Reilly 2000) 第12章Python编程摘录的“error handling”部分。

在Siew Kam Onn的博客文章“用Python编程Python,如何克服从makepy生成的python文件中的COM_error”中,还有一些关于Excel的有用信息。

史蒂文可能是我的variables名不好,但没有在代码中的代码其工作的罚款我唯一担心的是COM错误

我的脚本运行没有错误,如果我还没有开始另一个Excel

我的排队是任何人都知道如何克服它与使用调度或是否有任何其他Excel模块的python,我可以处理这个问题?

excel =调度('Excel.Application')

excel.Visible = True

file_name =“E:\ Report.xls”

工作簿= excel.Workbooks.Open(file_name)

片= workbook.Sheets(1)

考虑我在写excel的东西

sheet.Cells(1,1).Value ='test1'

sheet.Cells(1,2).Value ='test2'

sheet.Cells(1,3).Value ='test3'

sheet.Cells(1,4).Value ='test4'

sheet.Cells(1,5).Value ='test5'

sheet.Cells(1,6).Value ='test6'

sheet.Cells(1,7).Value ='test7'

sheet.Cells(1,8).Value ='test8'

我最近遇到了同样的问题。 虽然听起来好像可能有多个根本原因,但是我的情况却发生了,因为Python对于Excel跟进调用太快,尤其是外部查询刷新。 我通过在我的大部分调用之间插入time.sleep()来解决这个间歇性的“调用被拒绝被调用者”的错误,并增加了特别冗长的调用(通常在7-15秒之间)的睡眠参数。 这让Excel有时间在Python发布其他命令之前完成每个命令。