Python:使用win32打开Excel文件

时间:2018-12-16 04:22:47

标签: python excel win32com

我的代码昨天工作正常,但是今天当我再次尝试运行它时,它给我抛出了一个错误,并且我试图找出答案,但是我做不到。希望你能在这里帮助我。非常感谢!

import fnmatch
import os
import scipy as s
import pandas as pd
import win32com.client as win32 

for file in os.listdir('.'):
    if fnmatch.fnmatch(file, '*.xlsx'):
    print(file)
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(file)
    excel.Visible = False
    excel.DisplayAlerts = False
    wb.DoNotPromptForConvert = True
    wb.CheckCompatibility = False

    ws = wb.Worksheets('Exec Summary')
    ws.Activate
    canvas = ws.Shapes

    for shp in canvas:
        if shp.TextFrame.Characters:
            print("Comments Found")
            print(shp.TextFrame2.TextRange)
            break
            wb.Close(True)

这是系统抛出的错误:

---> 11 wb = excel.Workbooks.Open(文件)

com_error:(-2147352567,“发生异常。”,(0,“ Microsoft Excel”,“对不起,我们找不到ZPC.xlsx。是否有可能将其移动,重命名或删除?”,'xlmain11 .chm',0,-2146827284),无)

我已经检查并确认文件已在目录中。你们以前遇到过吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试打印file并查看会发生什么吗?

这里可能发生的情况是您没有在os.listdir('.')中正确指示目录路径。
os.listdir('.')将检查您正在运行的python脚本所在的默认目录。
如果是同一文件夹,它将起作用。
但是,如果不是,则必须专门包括文件夹的确切路径。确切的文件路径应如下所示的示例:

filepath = r'C:\Users\yournamehere\Desktop\yourfolderhere\\' + 'ZPC.xlsx'  

os.listdir外观示例:

dirpath = r'C:\Users\yournamehere\Desktop\yourfolderhere\\'  
for file in os.listdir(dirpath):  
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(dirpath + file)

此外,如果您希望以更优雅的方式加入dirpathfile
您可以使用

os.path.join(dirpath, file)

答案 1 :(得分:0)

我知道现在回答这个问题可能为时已晚,但请尝试使用

使用 wb = excel.Workbooks.Open(dirpath + file)前的"excel.Visible = True"。