import openpyxlimport requestsimport jsonprint("欢迎使用高德坐标获取工具!")print("请确保后续输入内容准确无误且符合程序要求!")print("请确认已申请高德开放平台 Web 服务 API Key,申请地址:https://console.amap.com/dev/key/app")gaode_key = input("请输入高德开放平台 API Key:") # 输入高德 API Key# 构建函数,基于高德 API 根据地名获取经纬度坐标defreturn_coord(name): url = "https://restapi.amap.com/v3/geocode/geo" params = {"key": gaode_key, "address": name} res = requests.get(url, params) jd = json.loads(res.text) coord = jd["geocodes"][0]["location"] X, Y = coord.split(",") X_num, Y_num = float(X), float(Y)return X_num, Y_num# 打开指定 Excel 文件,从中获取地名搜索关键字、经纬度的列号以及数据起始行号workbook_name = input("请输入 Excel 文件路径及名称,路径格式参考:D:\Data\data.xlsx:")workbook_name = workbook_name.replace("\\", "/") # 路径中使用反斜杠转义workbook = openpyxl.load_workbook(workbook_name)sheet_name = input("请输入 Excel 文件中的 sheet 工作表名称:")sheet = workbook[sheet_name]name_col = input("请输入 Excel 文件中地名搜索关键字所在大写字母列号(A、B、C...):")X_col = input("请输入 Excel 文件中经度所在大写字母列号(A、B、C...):")Y_col = input("请输入 Excel 文件中纬度所在大写字母列号(A、B、C...):")start_row = int(input("请输入 Excel 文件中数据内容起始数字行号(不包括标题及表头,1、2、3...):"))X_col_num, Y_col_num = ord(X_col) - 64, ord(Y_col) - 64# 经纬度列号转数字# 从工作簿中的指定区域获取地名搜索关键字文本列表name_list = list()name_keys = sheet[name_col]for name_cell in name_keys[start_row - 1 :]: name_list.append(name_cell.value)# 遍历地名搜索关键字列表,基于高德 API 获取其对应的经纬度坐标并写入工作簿for i inrange(len(name_list)): name = name_list[i] X, Y = return_coord(name) print(name, X, Y) row_num = start_row + i sheet.cell(row=row_num, column=X_col_num).value = X sheet.cell(row=row_num, column=Y_col_num).value = Ysave_name = input("请输入保存 Excel 文件的名称(如 data.xlsx):")save_name = save_name.replace("\\", "/") # 路径中使用反斜杠转义workbook.save(save_name)print("包含坐标的 Excel 文件导出完成!")