Excel 如何循环遍历文件夹中的所有xls文件以查找图纸名称,然后替换它们

Excel 如何循环遍历文件夹中的所有xls文件以查找图纸名称,然后替换它们,excel,python-3.x,xlrd,Excel,Python 3.x,Xlrd,我试图循环遍历文件夹中的所有XLS文件,然后用另一个字符串替换工作表名称。必须对其中的所有文件执行此操作 我对编程比较陌生,下面是我的Python代码。它运行正常(部分情况下,当我一次只运行一个文件时),但是,我无法让它在整个文件夹中运行 from xlutils.copy import copy from xlrd import open_workbook # open the file direc = input('Enter file name: ') rb = open_workboo

我试图循环遍历文件夹中的所有XLS文件,然后用另一个字符串替换工作表名称。必须对其中的所有文件执行此操作

我对编程比较陌生,下面是我的Python代码。它运行正常(部分情况下,当我一次只运行一个文件时),但是,我无法让它在整个文件夹中运行

from xlutils.copy import copy
from xlrd import open_workbook

# open the file
direc = input('Enter file name: ')
rb = open_workbook(direc)

wb = copy(rb)

#index of a sheet
pointSheet = rb.sheet_names()
print(pointSheet)
idx = pointSheet.index(pointSheet)

wb.get_sheet(idx).name = u'RenamedSheet1'
wb.save(direc)
错误消息:

Traceback (most recent call last):
  File "./Rename.py", line 13, in <module>
    idx = pointSheet.index(pointSheet)
ValueError: ['x xxx xxxx xxxxxx'] is not in list
对于单个文件,请尝试以下操作(未测试):

从xlutils.copy导入复制
从xlrd导入打开的\u工作簿
#打开文件
direc=input('输入文件名:')
rb=开放式工作簿(direc)
wb=副本(rb)
对于rb.sheet_names()中的点工作表
打印(点页)
idx=点表索引(点表)
wb.get_sheet(idx).name=u'RenamedSheet1'
wb.save(direc)
并使用
listdir
(取自)将其包装在另一个循环中:

导入操作系统
对于os.listdir(“/mydir”)中的文件:
如果文件.endswith(“.xls”):
# 
对于单个文件,请尝试以下方法(未测试):

从xlutils.copy导入复制
从xlrd导入打开的\u工作簿
#打开文件
direc=input('输入文件名:')
rb=开放式工作簿(direc)
wb=副本(rb)
对于rb.sheet_names()中的点工作表
打印(点页)
idx=点表索引(点表)
wb.get_sheet(idx).name=u'RenamedSheet1'
wb.save(direc)
并使用
listdir
(取自)将其包装在另一个循环中:

导入操作系统
对于os.listdir(“/mydir”)中的文件:
如果文件.endswith(“.xls”):
# 

此代码不包含循环?我不知道
.index
函数是如何工作的,但是我假设
.sheet\u names()
返回一个名称数组,并且需要循环通过该数组来重命名单独的表。我认为,因为将数组而不是字符串传递到
index
函数中,所以错误会显示
['x xxx xxxx xxxxxx']
而不是
'x xxx xxxxx xxxxxx'
此代码不包含循环?我不知道
.index
函数如何工作,但我假设
.sheet\u names()
返回一个名称数组,您需要在该数组中循环以重命名单独的工作表。我认为,因为您将数组而不是字符串传递到
index
函数中,所以错误显示为
['x xxx xxxx xxxxx']
而不是
'x xxx xxxxx xxxxx'
files = []
for dirname, dirnames, filenames in os.walk('D:\Temp\Final'):
    # print path to all subdirectories first.
    for subdirname in dirnames:
        files.append(os.path.join(dirname, subdirname))

    # print path to all filenames.
    for filename in filenames:
        files.append(os.path.join(dirname, filename))


pprint(files)

for i in range(0,len(files)):
    rb = open_workbook(files[i])
    wb = copy(rb)
    idx = rb.sheet_names().index('5 new bulk rename')
    wb.get_sheet(idx).name = u'RenamedSheet1'
    wb.save(files[i])

print('Operation succeeded!')