使用Python Openpyxl向Excel指定区域写入列表并替换指定值
解决方案
首先确保你已经安装了openpyxl库:
pip install openpyxl
以下是实现需求的完整代码,包含数据预处理和指定区域写入逻辑:
from openpyxl import load_workbook # 替换成你的实际my_list数据 my_list = [ ["Mon", "W", "Tue", "W", "Wed"], ["W", "Mon", "W", "Tue", "Wed"], ["Wed", "W", "Mon", "W", "Tue"], ["Tue", "W", "Wed", "W", "Mon"], ["W", "Wed", "W", "Mon", "Tue"], ["Mon", "W", "Tue", "Wed", "W"] ] # 加载现有Excel文件,替换成你的文件路径 wb = load_workbook("your_file.xlsx") # 选择目标工作表,替换成你的工作表名称 ws = wb["Sheet1"] # 定义需要替换为None的关键词 target_words = {"Mon", "Tue", "Wed"} # 指定写入的起止单元格对应的行列号 start_row = 3 start_col = 5 # E列对应数字5 end_row = 8 end_col = 35 # AI列对应数字35 # 遍历目标区域的每一行 for row_num in range(start_row, end_row + 1): # 取出my_list中对应的子列表 current_data = my_list[row_num - start_row] # 遍历目标区域的每一列 for col_num in range(start_col, end_col + 1): # 计算当前元素在子列表中的索引,超出长度则设为None data_idx = col_num - start_col item = current_data[data_idx] if data_idx < len(current_data) else None # 替换指定关键词为None if item in target_words: item = None # 写入单元格 ws.cell(row=row_num, column=col_num, value=item) # 保存修改后的文件 wb.save("your_file.xlsx")
关键说明:
- 数据替换逻辑:通过集合判断快速匹配需要替换的关键词,将
Mon/Tue/Wed直接替换为None,写入Excel后对应单元格会显示为空 - 区域匹配校验:E3到AI8对应6行(3-8)、31列(E到AI),代码会自动匹配
my_list的结构,子列表长度不足时超出列自动填充None,超出长度的元素不会写入目标区域 - 文件操作注意:保存文件时不要打开目标Excel,否则会因文件占用报错;如果需要保留原文件,可以修改保存路径为新文件名
内容的提问来源于stack exchange,提问作者Sagar Patil
相关产品推荐
相关产品推荐

