如何遍历文件夹中的所有 xls 文件以找到 sheet 名称,然后替换它们
How can I loop through all the xls files in a folder to find the sheet names, and then replace them
我试图遍历一个文件夹中的所有 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
我的错!上面的代码用于测试单个文件。这是循环:
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!')
对单个文件尝试这样的操作(未经测试):
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)
for pointSheet in rb.sheet_names()
print(pointSheet)
idx = pointSheet.index(pointSheet)
wb.get_sheet(idx).name = u'RenamedSheet1'
wb.save(direc)
并使用 listdir
(取自 here)将其包装在另一个循环中:
import os
for file in os.listdir("/mydir"):
if file.endswith(".xls"):
# <do what you did for a single file>
我试图遍历一个文件夹中的所有 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
我的错!上面的代码用于测试单个文件。这是循环:
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!')
对单个文件尝试这样的操作(未经测试):
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)
for pointSheet in rb.sheet_names()
print(pointSheet)
idx = pointSheet.index(pointSheet)
wb.get_sheet(idx).name = u'RenamedSheet1'
wb.save(direc)
并使用 listdir
(取自 here)将其包装在另一个循环中:
import os
for file in os.listdir("/mydir"):
if file.endswith(".xls"):
# <do what you did for a single file>