求助:基于Python xlwt创建含指定工作日的Excel工作表及表格
解决方案:生成指定工作日的Excel工作表并添加表格
看起来你已经搞定了核心的工作日生成逻辑,接下来我们把这部分和Excel表格创建整合起来,一步一步实现「每个工作日对应独立工作表+工作表内嵌日期与表格」的需求。我会基于你提供的代码做修改完善,完全匹配你的要求:
完整实现代码
import xlwt from datetime import date, timedelta, datetime def daterange(date1, date2): for n in range(int((date2 - date1).days) + 1): yield date1 + timedelta(n) # 定义目标日期范围:2020年9月25日至2020年10月24日 start_dt = date(2020, 9, 25) end_dt = date(2020, 10, 24) # 排除周六(weekday索引5)和周日(weekday索引6) exclude_weekdays = [5, 6] # 创建Excel工作簿对象 workbook = xlwt.Workbook() # 预定义样式:日期格式、表头样式 date_style = xlwt.XFStyle() date_style.num_format_str = 'dd/mm/yyyy' # 表头样式:加粗字体+黑色细边框 header_style = xlwt.XFStyle() font = xlwt.Font() font.bold = True header_style.font = font borders = xlwt.Borders() borders.left = xlwt.Borders.THIN borders.right = xlwt.Borders.THIN borders.top = xlwt.Borders.THIN borders.bottom = xlwt.Borders.THIN header_style.borders = borders # 遍历每个工作日,创建对应工作表 for dt in daterange(start_dt, end_dt): if dt.weekday() not in exclude_weekdays: # 用日期字符串做工作表名称,确保唯一且直观 sheet_name = dt.strftime("%Y-%m-%d") worksheet = workbook.add_sheet(sheet_name) # 在A1单元格写入当前工作表对应的日期 worksheet.write(0, 0, dt, date_style) # 添加表格框架:从A3开始设置表头 table_headers = ["任务名称", "完成状态", "负责人", "备注"] for col_idx, header in enumerate(table_headers): worksheet.write(2, col_idx, header, header_style) # 预留8行空白数据行(可根据需求调整行数) for row_idx in range(3, 11): for col_idx in range(len(table_headers)): worksheet.write(row_idx, col_idx, "", xlwt.XFStyle()) # 调整列宽,避免内容截断(256是xlwt的宽度单位,18对应约18个字符宽度) for col_idx in range(len(table_headers)): worksheet.col(col_idx).width = 256 * 18 # 保存最终的Excel文件 workbook.save('workday_task_sheets.xls')
关键细节说明
- 代码结构优化:把所有导入放在开头,避免分散调用,保持代码整洁;
- 工作表命名:用
YYYY-MM-DD格式的日期作为工作表名称,确保每个工作表唯一,一眼就能对应到日期; - 日期与表格结合:每个工作表的A1单元格固定写入对应日期,表格从A3开始布局,避免内容重叠;
- 样式美化:给表头添加加粗和边框,调整列宽,让表格更接近日常使用的规范样式;
- 可扩展性:你可以随时修改
table_headers的内容、预留数据行数,或者调整列宽数值来适配自己的需求。
运行这段代码后,你会得到一个包含所有指定工作日工作表的Excel文件,每个工作表都自带日期和现成的表格框架,直接填写内容即可。
内容的提问来源于stack exchange,提问作者AReddy




