将Excel文件工作簿合并到一个文件夹中

时间:2019-09-15 14:14:01

标签: python excel

我是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),无)

1 个答案:

答案 0 :(得分:0)

我相信您的路线可能不对。通常来说,Windows中的users目录应该是这样的:

C:\\Users\\lb\\Desktop\\consolidation

如果不确定路径,还可以通过在python脚本中浏览路径来调试路径,直到使用os.chdir()命令和os.listdir()命令找到文件夹为止。在所需的文件夹中时,可以使用os.getcwd()命令。

enter image description here

如果您想熟悉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))