项目说明
百度地图标注数据量不大,希望直接读取excle生成标注;同时会有修改、编辑的需求。
项目分析
1.项目的没有难点,只有复杂度。如果是将标注信息固定在json或js文件中,即可实现;但是对于非编程人员,进行修改或者编辑的时候,友好性太差。
2.读取exlce的优势在于,非编程人员可以直观的修改和编辑标注信息。完成该操作后,通过python读取excle转化为json或js文件。
3.可以将代码封装成exe应用程序,方便使用;
项目代码
导入模块
import xlrd import os import json from http.server import HTTPServer, SimpleHTTPRequestHandler import webbrowser
读取excel数据并将其转为js文件
# 读取excel数据并将其转为js文件 filename = r'data/lockdata.xls' # 判断文件是否存在 file_data = os.path.exists(filename) if not file_data: print("系统默认data.xls表格文件不存在.") else: print("系统获取到文件,处理中...") data = xlrd.open_workbook(filename) # 文件名以及路径,如果路径或者文件名有中文给前面加一个r不转义。 # 获取你要sheet的名称 sheet_name = data.sheet_names() # 根据sheet索引或者名称获取sheet内容 sheet = data.sheet_by_index(0) # 获取整行和整列的值(列表) rows = sheet.row_values(1) # 获取第2行内容 # 自定义数组 tables = [] data = {} for rown in range(sheet.nrows): array = {'name': sheet.cell_value(rown, 0), 'lng': sheet.cell_value(rown, 1), 'lat': sheet.cell_value(rown, 2)} tables.append(array) # print(tables) # 删除标题头 del tables[0] data = tables # 转为JSON res = json.dumps(data, ensure_ascii=False) # print(res) # 生成对应的JS数据文件 content = 'var data ={}'.format(res) # 写入文件 with open(r'js/poidata.js', 'w', encoding="utf-8") as f: f.write(content) print("经纬度数据转换完成..")
创建http server
# 创建http server class GetHttpServer(SimpleHTTPRequestHandler): protocol_version = "HTTP/1.0" server_version = "PSHS/0.1" sys_version = "Python/3.9.x" target = "./" # 监听目录,配置项 def do_get(self): SimpleHTTPRequestHandler.do_GET(self) def do_post(self): print("postmsg recv, path error") data = self.rfile.read(int(self.headers["content-length"])) data = json.loads(data) self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() rspstr = "recv ok, data = " rspstr += json.dumps(data, ensure_ascii=False) self.wfile.write(rspstr.encode("utf-8")) def http_server(): ip = "localhost" # 监听IP,配置项 port = 8800 # 监听端口,配置项 index_url = "http://%s:%d/index.html" % (ip, port) # 监听主页url,配置项 server = HTTPServer((ip, port), GetHttpServer) try: # 弹出窗口 webbrowser.open(index_url) # 输出信息 print("服务器监听地址: ", index_url) server.serve_forever() except KeyboardInterrupt: server.socket.close() # 执行服务器脚本 http_server()
源代码:https://download.csdn.net/download/weixin_41290949/29086018
lockdatav Done!