使用 Python openpyxl 搜索和删除不需要的 Excel 工作表
Using Python openpyxl to search and Delete Unwanted Excel Sheets
使用openpyxl,我想删除所有包含一些关键字的sheet。
例如,我的 sheet 标题是
['ABC-123','ABC-456','DEF-123','DEF-456','GHI-123','GHI-456','JKL-123','JKL-456']
我想保留 sheet 的关键词列表
['GHI','JKL']
最后,如果代码执行正确。剩余的 sheet 个标题应该是:
['GHI-123','GHI-456','JKL-123','JKL-456']
我的代码示例如下:
file = 'z:\excel\test.xlsx'
wb = openpyxl.load_workbook(file)
ws = wb.active
list_of_sheets_to_keep = ['GHI','JKL']
numbers_of_sheets = len(sheet_names)
i = 0
for i in range(numbers_of_sheets):
x = wb.sheetnames[i]
s = wb[str(x)]
sheet = str(s.title)
if sheet[:3] not in list_of_sheets_to_keep:
print('Deleting sheet: ' + sheet + '\n because it is not in the List of Sheets to Keep')
del wb[sheet] # this doesn't work
# wb.remove(sheet) # and this doesn't work either
# del wb[title] # doesn't work either
我收到 del wb[sheet] 的错误:
Traceback (most recent call last):
File "Z:\excel\test.py", line 31, in <module>
x = wb.sheetnames[i]
IndexError: list index out of range
和 wb.remove(sheet) 的这个错误:
Traceback (most recent call last):
File "Z:\excel\test.py", line 39, in <module>
wb.remove(sheet)
File "Z:\.virtualenvs\excel-kLb3DFP1\lib\site-packages\openpyxl\workbook\workbook.py", line 233, in remove
idx = self._sheets.index(worksheet)
ValueError: 'ABC-123' is not in list
最后 del wb[title] 也不起作用:
Traceback (most recent call last):
File "Z:\excel\test.py", line 38, in <module>
del wb[ws.title]
File "Z:\excel-kLb3DFP1\lib\site-packages\openpyxl\workbook\workbook.py", line 292, in __delitem__
sheet = self[key]
File "Z:\.virtualenvs\excel-kLb3DFP1\lib\site-packages\openpyxl\workbook\workbook.py", line 289, in __getitem__
raise KeyError("Worksheet {0} does not exist.".format(key))
KeyError: 'Worksheet ABC-123 does not exist.'
我解决了
wb = openpyxl.load_workbook(file)
ws = wb.active
sheet_names = wb.sheetnames
list_of_sheets_to_keep = ['GHI','JKL']
for i in sheet_names:
if i[:3] not in list_of_sheets_to_keep:
print('Deleting sheet: ' + i')
del wb[i]
使用openpyxl,我想删除所有包含一些关键字的sheet。 例如,我的 sheet 标题是
['ABC-123','ABC-456','DEF-123','DEF-456','GHI-123','GHI-456','JKL-123','JKL-456']
我想保留 sheet 的关键词列表
['GHI','JKL']
最后,如果代码执行正确。剩余的 sheet 个标题应该是:
['GHI-123','GHI-456','JKL-123','JKL-456']
我的代码示例如下:
file = 'z:\excel\test.xlsx'
wb = openpyxl.load_workbook(file)
ws = wb.active
list_of_sheets_to_keep = ['GHI','JKL']
numbers_of_sheets = len(sheet_names)
i = 0
for i in range(numbers_of_sheets):
x = wb.sheetnames[i]
s = wb[str(x)]
sheet = str(s.title)
if sheet[:3] not in list_of_sheets_to_keep:
print('Deleting sheet: ' + sheet + '\n because it is not in the List of Sheets to Keep')
del wb[sheet] # this doesn't work
# wb.remove(sheet) # and this doesn't work either
# del wb[title] # doesn't work either
我收到 del wb[sheet] 的错误:
Traceback (most recent call last):
File "Z:\excel\test.py", line 31, in <module>
x = wb.sheetnames[i]
IndexError: list index out of range
和 wb.remove(sheet) 的这个错误:
Traceback (most recent call last):
File "Z:\excel\test.py", line 39, in <module>
wb.remove(sheet)
File "Z:\.virtualenvs\excel-kLb3DFP1\lib\site-packages\openpyxl\workbook\workbook.py", line 233, in remove
idx = self._sheets.index(worksheet)
ValueError: 'ABC-123' is not in list
最后 del wb[title] 也不起作用:
Traceback (most recent call last):
File "Z:\excel\test.py", line 38, in <module>
del wb[ws.title]
File "Z:\excel-kLb3DFP1\lib\site-packages\openpyxl\workbook\workbook.py", line 292, in __delitem__
sheet = self[key]
File "Z:\.virtualenvs\excel-kLb3DFP1\lib\site-packages\openpyxl\workbook\workbook.py", line 289, in __getitem__
raise KeyError("Worksheet {0} does not exist.".format(key))
KeyError: 'Worksheet ABC-123 does not exist.'
我解决了
wb = openpyxl.load_workbook(file)
ws = wb.active
sheet_names = wb.sheetnames
list_of_sheets_to_keep = ['GHI','JKL']
for i in sheet_names:
if i[:3] not in list_of_sheets_to_keep:
print('Deleting sheet: ' + i')
del wb[i]