如何使用Openpyxl按Excel单元格值条件筛选追加数据到另一文件
Openpyxl 实现Excel条件数据追加方案
前置依赖安装
- 首先确保Python环境已安装openpyxl库,打开终端执行以下命令完成安装:
pip install openpyxl
实现逻辑
- 加载源Excel(文件1),遍历A列所有带数据的单元格
- 筛选出A列值等于
'x'的行,提取该行B列的对应数值 - 加载目标Excel(文件2),定位到现有数据的末尾行,将符合条件的行数据追加写入目标表的A、B列区域
- 保存修改后的目标文件,完成操作
完整实现代码
from openpyxl import load_workbook # --------------- 以下配置项请替换为你本地的实际参数 --------------- source_file_path = "你的源Excel文件1完整路径.xlsx" target_file_path = "你的目标Excel文件2完整路径.xlsx" source_sheet = "Sheet1" # 源文件中取数的工作表名称 target_sheet = "Sheet1" # 目标文件中写入数据的工作表名称 # ------------------------------------------------------------- # 加载源文件,data_only=True读取单元格实际展示的值而非公式 wb_source = load_workbook(source_file_path, data_only=True) ws_source = wb_source[source_sheet] # 加载目标文件 wb_target = load_workbook(target_file_path) ws_target = wb_target[target_sheet] # 遍历源文件A、B列所有行数据 for row_val in ws_source.iter_rows(min_col=1, max_col=2, values_only=True): a_val, b_val = row_val # 匹配A列值为'x'的行,若需要忽略大小写/前后空格,可替换为 str(a_val).strip().lower() == 'x' if a_val == 'x': # 定位到目标表下一个空行 write_row = ws_target.max_row + 1 # 写入对应列:A列写入匹配到的'x',B列写入对应数值 ws_target.cell(row=write_row, column=1, value=a_val) ws_target.cell(row=write_row, column=2, value=b_val) # 保存修改 wb_target.save(target_file_path) # 关闭工作簿释放资源 wb_source.close() wb_target.close() print("数据追加完成")
使用注意事项
- 运行代码前请关闭两个Excel文件,避免文件被占用导致写入失败
- 代码会自动识别目标表现有数据的最后一行位置,不会覆盖原有内容
- 如果只需要把B列的数值写入目标文件,不需要同步写入'x',删除代码中
ws_target.cell(row=write_row, column=1, value=a_val)这一行即可
内容的提问来源于stack exchange,提问作者Lote_marsk_chozey
相关产品推荐
相关产品推荐

