从工作簿中删除工作表 - python

zsh*_*_18 9 python-3.x openpyxl

我想从我的 Excel 文件中删除一个工作表,我正在尝试以下代码:


import openpyxl

workbook1 = openpyxl.load_workbook(input_file_folder + input_file_name)
print(workbook1.sheetnames)
Sheet1 = workbook1['Sheet1']
workbook1.remove(Sheet1)
workbook1.save(input_file_folder + input_file_name)
writer.save()

Run Code Online (Sandbox Code Playgroud)

工作表名称打印为: ['Sheet1', 'Candidate Campaign 0', 'Candidate Campaign 6', 'Candidate Campaign 7', 'Candidate Campaign 8', 'Valid Campaigns']

但不知何故,“Sheet1”并没有被删除。

我什至试过:


n = workbook1.sheetnames
workbook1.remove(n[1])

Run Code Online (Sandbox Code Playgroud)

但这也不起作用。

任何人都可以请指出什么是错的。由于此命令适用于其他工作表,但只有Sheet1(默认)不会被删除。

Spa*_*ine 21

workbook1.save()使用而不是保存文件writer.save()

from openpyxl import load_workbook

wb = load_workbook(file_workbook)
if 'Sheet1' in wb.sheetnames:
    wb.remove(wb['Sheet1'])
wb.save(file_workbook)
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为 `del workbook['Sheet1']` 现已弃用[如文档中所述](https://openpyxl.readthedocs.io/en/stable/api/openpyxl.workbook.workbook.html ?highlight=workbook#openpyxl.workbook.workbook.Workbook.remove) (3认同)

zsh*_*_18 12


del workbook1['Sheet1']

Run Code Online (Sandbox Code Playgroud)

正如@Charlie Clark 所建议的