Skip to main content
 首页 » 编程设计

python之excel 访问被 win32 python pywin32 拒绝

2025年05月04日12mayingbao

我的代码是

#Opens template for creating final report 
excel = win32.dynamic.Dispatch('Excel.Application') 
template = os.path.abspath((folderpath+'\Poop.xlsx')) 
wb = excel.Workbooks.Open(template) 
freshws= wb.Sheets("Fresh") #Sheet names must match perfectly 
secws= wb.Sheets("sec") 
 
cur.execute("Select * from FIRALL") 
freshdata=list(cur.fetchall()) 
#writes to the first sheet 
datarowlen=0 
for i,a in enumerate(freshdata): 
    datarowlen = len(a) 
    for j,b in enumerate(a): 
        freshws.Cells(i+1,j+1).Value = a[j] 
 
cur.execute("Select * from SECVE") 
secdata=list(cur.fetchall()) 
#writes to the second sheet 
datarowlen=0 
for i,a in enumerate(secdata): 
    datarowlen = len(a) 
    for j,b in enumerate(a): 
        secws.Cells(i+1,j+1).Value = a[j] 
#saves the report 
wb.SaveAs() 
wb.Close() 

运行代码时出现的错误是

Traceback (most recent call last): 
  File "main.py", line 369, in <module> 
    wb = excel.Workbooks.Open(template) 
  File "<COMObject <unknown>>", line 8, in Open 
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel' 
, "Microsoft Excel cannot access the file 'path to stuff------------------------ 
Poop Report\\Poop.xlsx'. There are several possible reasons:\n\n\u2022 The file 
name or path does not exist.\n\u2022 The file is being used by another program.\ 
n\u2022 The workbook you are trying to save has the same name as a currently ope 
n workbook.", 'xlmain11.chm', 0, -2146827284), None) 

我收到一个弹出对话框,提示访问被拒绝。该文件不是只读的,我是它试图打开的工作簿的所有者。我试过了

win32.gencache.EnsureDispatch('Excel.Application') 

我仍然得到同样的错误。有什么我想念的吗?我转而使用动态思维,后期绑定(bind)可以解决这个错误。

我在尝试修复此代码时遇到的另一个错误是 Pywins -2147418111 错误。

请您参考如下方法:

我和一位同事正在诊断这个确切的问题。我不敢相信这是多么晦涩难懂,我们通过使用 .NET 等效代码搜索类似问题找到了解决方案:

要修复,请在 64 位架构的“C:\Windows\SysWOW64\config\systemprofile\”或 32 位服务器的“C:\Windows\System32\config\systemprofile\”中创建一个名为“Desktop”的文件夹。

这确实解决了一个完全相同的问题。