如何使用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
相关产品推荐
相关产品推荐

