如何使用openpyxl将Excel列空白单元格填充为该列统一文本值
openpyxl 填充指定列空白单元格方案
完整实现代码
你已经完成了工作簿读取,后续操作如下:
import openpyxl # 你已经执行的读取步骤 wb = openpyxl.load_workbook('states.xlsx') # 选择要操作的工作表,下面二选一即可 # 方式1:选择当前活动工作表 ws = wb.active # 方式2:指定工作表名称,比如你的工作表叫"数据"就写 ws = wb["数据"] # -------------------------- # 步骤1:确定填充值,下面二选一即可 # 选项A:手动指定固定填充值,比如你要填"MA"就直接写 fill_value = "MA" # 选项B:自动提取该列已有的固定值,不用手动输入(避免写错),此处以处理第2列(B列)为例 # fill_value = None # for cell_col in ws.iter_cols(min_col=2, max_col=2, values_only=True): # for val in cell_col: # if val is not None and str(val).strip() != "": # fill_value = val # break # if fill_value: # break # -------------------------- # 步骤2:遍历目标列填充空白单元格,还是以第2列为例,改min_col和max_col即可切换目标列 for row in ws.iter_rows(min_col=2, max_col=2): current_cell = row[0] # 判断单元格是否为空(同时兼容纯空白字符串的情况) if current_cell.value is None or str(current_cell.value).strip() == "": current_cell.value = fill_value # 步骤3:保存修改后的文件,建议先另存为新文件避免原始数据丢失 wb.save("filled_states.xlsx") # 如果确认要覆盖原文件,可以写 wb.save("states.xlsx")
注意事项
- 代码中
min_col和max_col对应你要处理的列序号,A列对应1、B列对应2,以此类推,改成你实际需要处理的列号即可 - 如果需要跳过表头,给
iter_rows加min_row=2参数即可,代表从第2行开始处理 - 对于超大型Excel文件,你可以给
load_workbook加read_only=False参数保证可写,同时建议处理前先备份原始文件
内容的提问来源于stack exchange,提问作者user15566733
相关产品推荐
相关产品推荐

