我是python初学者,我尝试构建一个脚本,将所有现有的excel工作簿合并到同一文件夹中的新簿中。但是我有一个错误,指出找不到excel文件。我被困住了。参见下面的编码:
import win32com.client as win32
import os
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()
path = r"/Users/lb/Desktop/consolidation"
suffix = "xlsx"
dirs = os.listdir(path)
for file in dirs:
if file.endswith(suffix):
w = excel.Workbooks.Open(file)
w.Sheets(1).Copy(wb.Sheets(1))
wb.SaveAs(os.path.join(path, "result.xlsx"))
excel.Application.Quit()
这是我运行脚本时的错误:
第12行的文件“ C:/ Users / lb / PycharmProjects / New Project / fusion2.py” w = excel.Workbooks.Open(文件) 文件“ C:\ Users \ lb \ AppData \ Local \ Temp \ gen_py \ 3.7 \ 00020813-0000-0000-C000-000000000046x0x1x7 \ Workbooks.py”,行78 ,转换器,AddToMru,本地,CorruptLoad) pywintypes.com_error:(-2147352567,“发生异常。”,(0,“ Microsoft Excel”,“'business_Descriptor.xlsx”。请检查文件名的拼写,并验证文件位置是否正确。
如果您尝试从最近使用过的文件列表中打开文件,请确保未重命名,移动或删除该文件。“,'xlmain11.chm',0,-2146827284),无)
答案 0 :(得分:0)
我相信您的路线可能不对。通常来说,Windows中的users目录应该是这样的:
C:\\Users\\lb\\Desktop\\consolidation
如果不确定路径,还可以通过在python脚本中浏览路径来调试路径,直到使用os.chdir()命令和os.listdir()命令找到文件夹为止。在所需的文件夹中时,可以使用os.getcwd()命令。
如果您想熟悉python中的文件系统,我还建议您阅读this。
继续上一部分,看来在您的代码中,
for file in dirs:
if file.endswith(suffix):
w = excel.Workbooks.Open(file)
w.Sheets(1).Copy(wb.Sheets(1))
您正在尝试使用文件本身的字符串名称而不是路径打开文件。如果您查看此link中的以下代码片段,您会发现它们在路径目录后附加了名称。这应该可以解决您的问题:P
import os
for filename in os.listdir('path/to/dir'):
if filename.endswith('.log'):
with open(os.path.join('path/to/dir', filename)) as f:
content = f.read()
基本上,您需要做的就是更改
w = excel.Workbooks.Open(file)
->
w = excel.Workbooks.Open(os.path.join(path,file))
因此,这部分代码的最终结果应如下所示(请注意if处的缩进!如果没有inif语句,则缩进什么):
for file in dirs:
if file.endswith(suffix):
w = excel.Workbooks.Open(os.path.join(path,file))
w.Sheets(1).Copy(wb.Sheets(1))