You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:基于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

火山引擎 最新活动