python 实现从一个excel表格中选择相应区域数据粘贴到另一个excel表格中指定区域的方法

import pandas as pd
from openpyxl import load_workbook

def qyhhsj(source_file,source_sheetname,source_col,source_start_row,source_end_row,source_start_col,source_end_col,target_file,target_sheetname,target_start_row,target_end_row,target_start_col,target_end_col):
    """
    source_file  数据源表格所在的路径
    source_sheetname   数据源表格所在的sheet名称
    source_col     数据源表格中需要的数据列的范围,如从C列到S列,则写成C:S
    source_start_row  数据源表格开始行
    source_end_row   数据源表格结束行
    source_start_col 数据源表格开始列
    source_end_col  数据源表格结束列
    target_file          目标表格所在的路径
    target_sheetname    目标表格所在的sheet名称
    target_start_row     目标表格开始行
    target_end_row    目标表格结束行
    target_start_col    目标表格开始列
    target_end_col    目标表格结束列
    """
    # 读取Excel文件
    file_path = source_file
    df = pd.read_excel(file_path, sheet_name=source_sheetname, header=None, index_col=None, usecols=source_col)

    # 打开需要替换数据的Excel文件
    wb2 = load_workbook(target_file)
    # 获取第二个Excel文件中指定的sheet
    ws2 = wb2[target_sheetname]
    # 选择要交换的区域数据
    required_data = df.iloc[source_start_row:source_end_row, source_start_col:source_end_col]

    # 打印显示required_data中第一行第一列的数据
    # print(required_data.iloc[0, 0])
    """
    # 指定要写入的Excel区域
    target_start_row = 5  # 区域从第5行开始
    target_start_col = 2  # 区域从第2列开始
    target_end_row = 17  # 区域从第17行结束
    target_end_col = 19  # 区域从第19列结束
    """
    ks_row=target_start_row
    ks_col=target_start_col
    # 遍历需要替换的区域行和列,将每个单元格的值替换成替换数据列中对应行的值
    for i in range(target_start_row, target_end_row):
        for j in range(target_start_col, target_end_col):
            print(i, j)
            # 将数据写入第i行第j列
            ws2.cell(row=i, column=j, value=required_data.iloc[i - ks_row, j - ks_col])

    # 保存修改后的第一个Excel文件
    wb2.save(target_file)
#调用qyhhsj方法,从源表格的第C列第1行到第13行数据输入到目标表格的'水平位移'sheet中第2列第5行到第17行中
qyhhsj( r'C:\Users\Thinkpad\Desktop\数据最终处理结果(人工监测)\X位移量合并.xls','Sheet1','C:S',1,13,0,17,r'C:\Users\Thinkpad\Desktop\数据最终处理结果(人工监测)\金溪水库资料整编2023110--V6.xlsx','水平位移',5,17,2,19)
#qyhhsj( r'C:\Users\Thinkpad\Desktop\数据最终处理结果(人工监测)\Y位移量合并.xls','Sheet1','C:S',1,13,0,17,r'C:\Users\Thinkpad\Desktop\数据最终处理结果(人工监测)\金溪水库资料整编2023110--V6.xlsx','水平位移',5,17,24,41)



你可能感兴趣的:(python)