如何从Excel取数至Python,实现按4位站点名匹配填充B-Q列数据
解决方案:Excel数据导入与自动填充实现
1. 从Excel电子表格导入数据到Python
最实用的方案是用pandas配合openpyxl(处理.xlsx格式),步骤如下:
先安装依赖库:
pip install pandas openpyxl读取Excel文件的示例代码:
import pandas as pd # 替换为你的Excel文件实际路径 excel_path = "你的文件路径.xlsx" # 读取指定工作表,默认读取第一个sheet df = pd.read_excel(excel_path, sheet_name="Sheet1", engine="openpyxl") # 查看前5行数据,验证导入是否成功 print(df.head())
如果你的文件是旧版.xls格式,把engine参数换成xlrd,记得先安装兼容版本:pip install xlrd==1.2.0(新版xlrd不再支持.xls)。
2. 输入4位站点名自动填充B-Q列数据
基于导入的DataFrame,分两种常见场景实现需求:
场景1:Python脚本内查询填充
写一个查询函数,输入站点名后直接返回对应B-Q列的数据,还能按需写回Excel:
def get_site_info(site_code, df): # 匹配A列的站点名,提取B到Q列(索引1到16,列从0开始计数) matched_data = df[df.iloc[:, 0] == site_code].iloc[:, 1:16] if not matched_data.empty: # 转为字典格式,方便后续使用 return matched_data.to_dict('records')[0] else: return f"未找到站点{site_code}的对应数据" # 示例调用:交互式输入站点名并返回结果 input_site = input("请输入4位站点名称:") result = get_site_info(input_site, df) print(result) # 可选:将结果写入Excel指定行(比如第20行的B-Q列) from openpyxl import load_workbook wb = load_workbook(excel_path) ws = wb.active target_row = 20 if isinstance(result, dict): col_num = 2 # B列对应openpyxl的列索引2 for val in result.values(): ws.cell(row=target_row, column=col_num, value=val) col_num += 1 wb.save(excel_path)
场景2:在Excel内直接实现自动填充(无需运行Python)
如果希望在Excel里输入站点名就自动填充,可以用Python给单元格批量设置VLOOKUP公式:
from openpyxl import load_workbook wb = load_workbook(excel_path) ws = wb.active # 假设在B2单元格输入站点名,要在C2到R2自动填充对应B-Q数据 for col_idx in range(3, 18): # C到R列对应索引3到17 ws.cell(row=2, column=col_idx).value = f'=VLOOKUP($B$2, $A:$Q, {col_idx}, FALSE)' wb.save(excel_path)
设置完成后,在Excel的B2输入4位站点名,C2到R2会自动填充对应行的B-Q列数据。
内容的提问来源于stack exchange,提问作者mr.rm
相关产品推荐
相关产品推荐

