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)