如何用Python将Excel文件1的A、B列数据复制到文件2的B、C列?
Python实现Excel列数据跨文件复制方案
原代码存在的问题
- 错误混用VBA的COM对象操作语法(
CreateObject是Windows脚本/VBA语法,Python未导入对应库的情况下无法使用) - 变量名拼写错误、未定义(如
objWorkbook未初始化,objWorksheetobjExcel属于语法错误) - 操作逻辑混乱,粘贴范围与需求不符(需求是从B2、C2开始,代码中错误指向B4、A1等位置)
- 导入了大量未使用的冗余库(
dateutil、datetime、os均未参与实际操作)
方案1:用Pandas快速实现(适合批量数据处理)
Pandas处理Excel数据效率极高,几行代码即可完成需求:
import pandas as pd # 读取文件1的A、B列(header=0表示第1行为表头) df_source = pd.read_excel("File 1.xlsx", usecols="A:B", header=0) # 读取文件2的全部数据,保留原有内容 df_target = pd.read_excel("File 2.xlsx", header=0) # 将文件1的A列数据赋值给文件2的B列(从第2行开始,对应DataFrame索引1) df_target.loc[1:, "B"] = df_source.iloc[:, 0].values # 将文件1的B列数据赋值给文件2的C列(从第2行开始) df_target.loc[1:, "C"] = df_source.iloc[:, 1].values # 保存修改后的文件2,不保留索引列 df_target.to_excel("File 2.xlsx", index=False)
注意:如果文件2的B、C列原有数据需要保留,此方案会覆盖从第2行开始的内容;若需保留格式,建议使用下面的openpyxl方案。
方案2:用Openpyxl实现(保留Excel原有格式)
Openpyxl可直接操作单元格,完美保留文件的格式样式:
from openpyxl import load_workbook # 打开源文件(只读模式提升效率)和目标文件 wb_source = load_workbook("File 1.xlsx", read_only=True) wb_target = load_workbook("File 2.xlsx") # 获取两个文件的第一个工作表 ws_source = wb_source.active ws_target = wb_target.active # 复制源文件A列(A2开始)到目标文件B列(B2开始) for row_num in range(2, ws_source.max_row + 1): # 获取源单元格值 cell_value = ws_source.cell(row=row_num, column=1).value # 写入目标单元格 ws_target.cell(row=row_num, column=2).value = cell_value # 复制源文件B列(B2开始)到目标文件C列(C2开始) for row_num in range(2, ws_source.max_row + 1): cell_value = ws_source.cell(row=row_num, column=2).value ws_target.cell(row=row_num, column=3).value = cell_value # 保存目标文件并关闭工作簿 wb_target.save("File 2.xlsx") wb_source.close() wb_target.close()
若需要复制单元格格式(如字体、背景色等),可添加一行:
ws_target.cell(row=row_num, column=2).style = ws_source.cell(row=row_num, column=1).style
内容的提问来源于stack exchange,提问作者Jaaz Douglas
相关产品推荐
相关产品推荐

