openpyxl批量生成Excel出现多余旧工作表和空白工作表问题求助
问题原因
- 你整个脚本仅在最开始初始化了一次
Workbook对象,所有创建的工作表都会被追加到这同一个工作簿实例中。循环运行到第4、5次处理file2的内容时,之前创建的sheet1、sheet2、sheet3仍保留在工作簿中,保存时自然会一起写入file2。 - openpyxl初始化
Workbook对象时会默认自动创建1张名为Sheet的空白工作表,你的代码没有删除这个默认表,所以所有生成的文件都会携带这张未初始化的空白工作表。
修正后代码
import openpyxl lst1=["file1","file1","file1","file2","file2"] lst2=["sheet1","sheet2","sheet3","sheet4","sheet5"] lst3=["a","b","c","d","e"] # 按文件名分组存储对应的工作表配置 file_config = {} for file_name, sheet_name, cell_value in zip(lst1, lst2, lst3): if file_name not in file_config: file_config[file_name] = [] file_config[file_name].append((sheet_name, cell_value)) # 逐个生成目标Excel文件 for file_name, sheets in file_config.items(): # 每个文件单独创建新的工作簿实例 wb = openpyxl.Workbook() # 删除默认生成的空白工作表 wb.remove(wb.active) # 添加当前文件需要的所有工作表 for sheet_name, cell_value in sheets: sheet = wb.create_sheet(sheet_name) sheet.cell(row=1, column=1).value = cell_value wb.save(f"{file_name}.xlsx")
运行上述代码即可实现file1仅包含sheet1、sheet2、sheet3,file2仅包含sheet4、sheet5,且无多余空白工作表的需求。
内容的提问来源于stack exchange,提问作者Fady Hanna
相关产品推荐
相关产品推荐

