import os #用于获取目标文件所在路径 import win32com.client #这里跟资料上不一样,资料上是直接import win32com,实际使用后面要加上 client #path = os.getcwd() path = os.getcwd() + '\\文件\\' files = [] for file in os.listdir(path): if file.endswith('.xlsx') or file.endswith('.xls'): #只获取excel文件 files.append(path + file) #如何删掉列表里的临时文件 files.pop(0) files.pop(0) #删除列表中以~$打头的excel excel_app = win32com.client.Dispatch('Excel.Application') #调用excel应用 excel_app.Visible = False #不显示excel文件 excel_app.DisplayAlerts = False #不显示警告信息 wb = excel_app.workbooks.Add() wb.SaveAs(os.getcwd() + '\\汇总.xlsx') ws = wb.worksheets(1) #获取第一个表 ws.name = "目录" for i in range(len(files)): file_name = files[i].split('\\')[-1].split('.')[0] #获取子excel文件的文件名 ,最后一个\\和.之前的内容 ws.Range('A' + str(i + 1)).value = file_name #将文件名写入目录 #读取子文件 wb_sub = excel_app.Workbooks.open(files[i]) #打开子excel文件 打开“文件”文件夹里的三张表 ws_sub = wb_sub.activesheet #获取活动工作表 ws_sub.Copy(ws) #复制工作表到汇总表 wb.activesheet.name = file_name #更改工作表名为文件名 wb_sub.close() #将目录工作表移动到最前面 first_sheet = files[0].split('\\')[-1].split('.')[0] wb.worksheets('目录').move(wb.worksheets(first_sheet)) #移动目录工作表到最前面 这段好好研究 wb.save() wb.close() excel_app.quit()
Traceback (most recent call last):
File "C:\Users\72409\Desktop\python文件\pythonProject3\Python保留格式复制多个excel工作表到汇总表并生成目录\保留格式复制多个excel.py", line 29, in <module>
wb_sub.close()
TypeError: 'bool' object is not callable
TypeError: 'bool' object is not callable提示对象不可调用,你可以先将功能代码注释,然后试试wb_sub.close(),看那里出现问题
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
解决了,save和close的首字母大写就能正常运行了,有没有能解释原因的呀