使用Python openpyxl循环创建Excel多工作表仅生成单页问题求助
问题原因
- 你将工作簿初始化
wb = openpyxl.Workbook()和文件保存wb.save(filepath)的逻辑放在了for循环内部,每次循环都会生成一个全新的空白工作簿,直接覆盖上一次循环保存的Excel文件,最终只会保留最后一次循环的执行结果。 - openpyxl初始化工作簿时会默认生成一个名为
Sheet的空白工作表,不需要可以手动删除。
修正后代码
from datetime import datetime import openpyxl from openpyxl.styles import Font table_name = ["M-1", "M-2", "M-3"] xltitle = datetime.now() tit_head = "ALL_MACHINE" + xltitle.strftime("%d_%m_%Y_%H_%M_%S")+".xlsx" filepath = tit_head headings = ("NAME", "ID", "EMPLOYEE NAME", "NUMBER", "START TIME", "STOP TIME") # 工作簿初始化放在循环外,只创建一次 wb = openpyxl.Workbook() # 删除默认生成的空白Sheet wb.remove(wb.active) for tab_nam in table_name: # 循环内仅创建新工作表、配置内容 sheet = wb.create_sheet(title=tab_nam) sheet.row_dimensions[1].font = Font(bold=True) for colno, heading in enumerate(headings, start=1): sheet.cell(row=1, column=colno).value = heading # 所有工作表创建完成后统一保存,只执行一次 wb.save(filepath)
内容的提问来源于stack exchange,提问作者Kiran Shankar
相关产品推荐
相关产品推荐

