Python使用openpyxl将列表值赋值到Excel指定工作表列区域
问题背景
需要将Python列表值批量写入指定Excel文件第6个工作表的AF6:AF22单元格区域,现有代码仅能给该区域统一写入固定值5,希望找到简洁的列表批量赋值方案。
现有代码存在两个基础错误:
- 未正确定位第6个工作表:
wb.worksheets返回所有工作表的列表,直接赋值给ws后无法定位到目标表 - 循环逻辑仅支持固定值写入,未关联列表索引做对应赋值
实现方法
openpyxl原生不支持直接对单元格切片区域赋值一维列表,但可以通过极简遍历实现同等效果,步骤如下:
- 修正工作表定位逻辑:Python序列索引从0开始,第6个工作表对应索引为5,即
ws = wb.worksheets[5] - 提前对齐列表长度:
AF6:AF22区域共17个单元格(22-6+1=17),待写入列表长度需要和单元格数量一致,否则会触发索引越界 - 遍历单元格时按索引匹配列表值写入即可,代码量和固定值写入几乎无差异
修正后的完整代码:
from openpyxl import load_workbook # 替换为实际待写入的列表,长度需匹配目标区域单元格数量 l = list(range(17)) file_path = 'excel_file.xlsx' wb = load_workbook(file_path) # 定位第6个工作表 ws = wb.worksheets[5] # 批量按顺序写入列表值 for idx, cell in enumerate(ws['AF6:AF22']): cell[0].value = l[idx] # 保存修改 wb.save(file_path)
提示:原代码中冗余导入了
pandas和Workbook,实际运行时可以删除,避免不必要的资源加载。如果追求更简洁的调用形式,可以将批量赋值逻辑封装为通用函数,底层逻辑和上述遍历写法一致。
内容的提问来源于stack exchange,提问作者helpme
相关产品推荐
相关产品推荐

