You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用xlwt与xlrd实现每5行数据存入一个Excel工作表?

实现每5行数据存入一个独立工作表的解决方案

我来帮你调整代码,实现每5行数据存入一个新工作表的需求。你的原始代码只针对单个工作表操作,我们需要添加动态创建工作表+数据分组写入的逻辑,具体修改如下:

修改后的完整代码

import xlwt

myyear = '2018'
myweek = '10'
mycd='1001'
fileName = myyear + myweek + '.xls'
savePath = r'D:/' + fileName

# 准备要写入的所有数据(保留你原来的测试数据)
data_list = [[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13]]

# 初始化工作簿
workbook = xlwt.Workbook(encoding='UTF-8')

# 定义写入表头的函数(每个工作表表头一致,复用逻辑)
def write_header(worksheet):
    worksheet.write(0, 0, label='year')
    worksheet.write(0, 1, label='week')
    worksheet.write(0, 2, label='CD')
    worksheet.write(0, 3, label='keyword')
    worksheet.write(0, 4, label='importance')

# 按每5行一组拆分数据,遍历每组创建工作表
for idx in range(0, len(data_list), 5):
    # 截取当前组的5行数据(最后一组可能不足5行)
    group_data = data_list[idx:idx+5]
    # 创建工作表,命名为Sheet1、Sheet2...
    sheet_name = f'Sheet{idx//5 + 1}'
    worksheet = workbook.add_sheet(sheet_name)
    # 写入表头
    write_header(worksheet)
    # 写入当前组的数据,从第1行(索引1)开始
    for row_num, (cmp_noun, value) in enumerate(group_data, start=1):
        worksheet.write(row_num, 0, label=myyear)
        worksheet.write(row_num, 1, label=myweek)
        worksheet.write(row_num, 2, label=mycd)
        worksheet.write(row_num, 3, label=cmp_noun)
        worksheet.write(row_num, 4, label=value)

# 保存工作簿
workbook.save(savePath)

关键修改点说明

  • 数据分组:用range(0, len(data_list), 5)实现每5行一组的拆分,最后一组自动处理不足5行的情况(比如你这里的13行,会分成3组:5+5+3)
  • 动态创建工作表:根据分组索引生成对应的工作表名称(Sheet1、Sheet2...),避免手动创建的麻烦
  • 表头复用:把表头写入逻辑封装成函数,减少重复代码
  • 简化流程:直接一次性创建所有工作表并写入数据,不需要先创建空表再打开修改,逻辑更清晰高效

这样运行后,你会得到一个包含3个工作表的Excel文件:

  • Sheet1:第1-5行数据
  • Sheet2:第6-10行数据
  • Sheet3:第11-13行数据

完全符合你每5行存入一个工作表的需求~

内容的提问来源于stack exchange,提问作者user9270170

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:55:40