如何用Python将Excel特定行的指定列值复制到另一个Excel文件
实现Excel筛选与列内容复制的解决方案
下面给你两种Python实现方案,分别用pandas和openpyxl库,覆盖不同使用场景:
方案一:用pandas快速实现(推荐,代码简洁高效)
pandas适合处理大数据量的Excel文件,几行代码就能完成需求:
步骤说明
- 导入pandas库
- 读取原Excel文件
- 筛选出A列值为
Sara的行 - 提取这些行的C列数据
- 将提取的数据写入新Excel文件
代码示例
import pandas as pd # 替换为你的原文件路径和新文件路径 original_path = "你的原Excel文件.xlsx" output_path = "输出的新Excel文件.xlsx" # 情况1:原Excel第一行是列名(比如A列列名为'Name') df = pd.read_excel(original_path) # 筛选A列(列名'Name')为'Sara'的行,提取C列(假设列名为'Content') filtered_data = df[df['Name'] == 'Sara'][['Content']] # 写入新文件,不保存索引 filtered_data.to_excel(output_path, index=False) # 情况2:原Excel没有列名(直接用列索引,A列是第0列,C列是第2列) df = pd.read_excel(original_path, header=None) filtered_data = df[df[0] == 'Sara'][2] # 转为DataFrame再写入,避免格式问题 filtered_data.to_excel(output_path, index=False, header=False)
方案二:用openpyxl逐行操作(适合需要精细控制Excel格式的场景)
openpyxl可以直接操作Excel的单元格,适合需要保留格式或者处理复杂结构的文件:
步骤说明
- 导入openpyxl库
- 加载原工作簿并获取目标工作表
- 创建新工作簿并获取新工作表
- 遍历原工作表的每一行,检查A列值
- 若符合条件,将对应C列值写入新工作表
- 保存新工作簿
代码示例
from openpyxl import load_workbook from openpyxl import Workbook # 替换为你的原文件路径和新文件路径 original_path = "你的原Excel文件.xlsx" output_path = "输出的新Excel文件.xlsx" # 加载原工作簿,默认读取活动工作表 wb_original = load_workbook(original_path) ws_original = wb_original.active # 创建新工作簿和工作表 wb_new = Workbook() ws_new = wb_new.active # 遍历原工作表的行(从第2行开始,假设第1行是表头;如果无表头就从第1行开始) row_num = 2 # 跳过表头 new_row_num = 1 for row in ws_original.iter_rows(min_row=row_num): # 获取A列单元格值(row[0]对应A列) a_value = row[0].value if a_value == 'Sara': # 获取C列单元格值(row[2]对应C列) c_value = row[2].value # 写入新工作表的第new_row_num行第1列 ws_new.cell(row=new_row_num, column=1, value=c_value) new_row_num += 1 # 保存新工作簿 wb_new.save(output_path)
注意事项
- 运行代码前需要先安装对应库:
pip install pandas openpyxl - 替换代码中的文件路径为你实际的文件路径
- 如果原Excel有多个工作表,需要指定工作表名称,比如
wb_original['Sheet1']
内容的提问来源于stack exchange,提问作者m.hossein
相关产品推荐
相关产品推荐

