千家信息网

Python+xlwings如何制作天气预报表

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要为大家分析了Python+xlwings如何制作天气预报表的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"
千家信息网最后更新 2025年01月19日Python+xlwings如何制作天气预报表

这篇文章主要为大家分析了Python+xlwings如何制作天气预报表的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习"Python+xlwings如何制作天气预报表"的知识吧。

前言

有趣的实战项目,用Python+xlwings模块制作天气预报表

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

requests模块;

xlwings模块;

json模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

既然是天气预报,那肯定是需要天气数据的。

找了一圈国内开放的天气API接口,大多都是需要注册,小F果断放弃。

腾讯倒是有个不错的,可惜接口信息不太完整,没有相应的数据说明。

最终选择了一个国外的天气API接口

并没有提供国内所有的城市,目前只有10个城市。

所以要想城市多一些,腾讯的天气接口还是可以考虑的。

一共是有10种天气状态,并且提供了相关的天气状态图片,可以供我们使用。

实现步骤

首先通过查询,获取城市的ID值

然后根据ID值,再去获取对应的天气信息

相关名称的中英文对照

# 天气--中英文名对照weather = {    'Snow': '雪',    'Sleet': '雨夹雪',    'Hail': '冰雹',    'Thunderstorm': '雷阵雨',    'Heavy Rain': '大雨',    'Light Rain': '小雨',    'Showers': '阵雨',    'Heavy Cloud': '阴',    'Light Cloud': '多云',    'Clear': '晴'}# 城市--中英文名对照citys = {    '北京': 'Beijing',    '成都': 'Chengdu',    '东莞': 'Dongguan',    '广州': 'Guangzhou',    '杭州': 'Hangzhou',    '香港': 'Hong Kong',    '上海': 'Shanghai',    '深圳': 'Shenzhen',    '天津': 'Tianjin',    '武汉': 'Wuhan'}

创建表格

安装xlwings库,并且使用命令行创建项目。

# 安装xlwingspip install xlwings -i https://mirror.baidu.com/pypi/simple/# 命令行运行xlwings quickstart weatherapp --standalone

如此便会生成两个文件,Python和Excel文件

其中weatherapp.py的文件内容

import xlwings as xwdef main():    wb = xw.Book.caller()    sheet = wb.sheets[0]    if sheet["A1"].value == "Hello xlwings!":        sheet["A1"].value = "Bye xlwings!"    else:        sheet["A1"].value = "Hello xlwings!"if __name__ == "__main__":    xw.Book("weatherapp.xlsm").set_mock_caller()    main()

而Excel是什么内容也没有的,打开时会提示是否启用宏,选择是

然后需要将Excel的开发工具打开,后面会使用它插入一些元素

上图为Mac电脑的设置,Windows电脑设置起来也很简单,具体可以百度。

通过点击开发工具选项,我们可以使用Excle的Visual Basic 编辑器(VBA),还能插入按钮(查询按钮)。

然后我在表格中插入一个点击按钮

选择宏名称为SampleCall,宏的位置为当前工作簿

点击按钮1,A1单元格出现内容Hello xlwings!

再次点击,A1单元格内容变为Bye xlwings!

也就意味着,修改weatherapp.py文件的代码,即可实现Excel的交互操作。

下面对表格进行页面设计,毕竟要让表格好看起来

设置表格的行高、列宽、背景色、固定文字内容等信息。

将单元格C3名称设置为city_name,插入6张太阳图片,排列在单元格C9~H9处,居中对齐,图片也改名为no.1~no.6。

修改weatherapp.py文件代码

import jsonfrom pathlib import Pathimport requestsimport xlwings as xw# 天气--中英文名对照weather = {    'Snow': '雪',    'Sleet': '雨夹雪',    'Hail': '冰雹',    'Thunderstorm': '雷阵雨',    'Heavy Rain': '大雨',    'Light Rain': '小雨',    'Showers': '阵雨',    'Heavy Cloud': '阴',    'Light Cloud': '多云',    'Clear': '晴'}# 城市--中英文名对照citys = {    '北京': 'Beijing',    '成都': 'Chengdu',    '东莞': 'Dongguan',    '广州': 'Guangzhou',    '杭州': 'Hangzhou',    '香港': 'Hong Kong',    '上海': 'Shanghai',    '深圳': 'Shenzhen',    '天津': 'Tianjin',    '武汉': 'Wuhan'}def main():    # 通过runpython从excel中调用python函数    wb = xw.Book.caller()    sht = wb.sheets[0]    # 从Excel中读取城市信息    city_name = citys[sht.range("city_name").value]    # 获取城市的ID值, 即woeid    URL_CITY = f"https://www.metaweather.com/api/location/search/?query={city_name}"    response_city = requests.request("GET", URL_CITY)    city_title = json.loads(response_city.text)[0]["title"]    city_id = json.loads(response_city.text)[0]["woeid"]    # 获取城市的天气信息    URL_WEATHER = f"https://www.metaweather.com/api/location/{city_id}/"    response_weather = requests.request("GET", URL_WEATHER)    weather_data = json.loads(response_weather.text)["consolidated_weather"]    # 创建空列表, 存储数据    min_temp = []    max_temp = []    weather_state_name = []    weather_state_abbr = []    applicable_date = []    # 处理数据    for index, day in enumerate(weather_data):        # 最低温度        min_temp.append(weather_data[index]["min_temp"])        # 最高温度        max_temp.append(weather_data[index]["max_temp"])        # 天气情况        weather_state_name.append(weather[weather_data[index]["weather_state_name"]])        # 天气情况缩写        weather_state_abbr.append(weather_data[index]["weather_state_abbr"])        # 日期        applicable_date.append(weather_data[index]["applicable_date"])    # 将获取到的值填充到Excel中    sht.range("C5").value = applicable_date    sht.range("C6").value = weather_state_name    sht.range("C7").value = max_temp    sht.range("C8").value = min_temp    sht.range("D3").value = city_title    # 创建列表    icon_names = ["no.1", "no.2", "no.3", "no.4", "no.5", "no.6"]    # 设置天气图片路径    icon_path = Path(__file__).parent / "images"    # 将天气情况与天气图片进行匹配,更新表格    for icon, abbr in zip(icon_names, weather_state_abbr):        image_path = Path(icon_path, abbr + ".png")        sht.pictures.add(image_path, name=icon, update=True)if __name__ == "__main__":    # 设置用于调试caller()的excel文件,可以直接在python里运行    xw.Book("weatherapp.xlsm").set_mock_caller()    main()

本文提供使用到的代码和数据,详见主页简介获取。

打开Excel表格,在城市栏输入10个城市中的一个,然后点击查询按钮,天气就会更新

Python的优点有哪些

1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。

关于"Python+xlwings如何制作天气预报表"就介绍到这了,更多相关内容可以搜索以前的文章,希望能够帮助大家答疑解惑,请多多支持网站!

天气 城市 模块 表格 内容 文件 预报 中英 代码 信息 图片 按钮 数据 预报表 制作 单元 接口 文名 工具 开发工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 oracle数据库缓慢 密码编码学与网络安全原版 怎么配置文件需要的数据库 数据库sql寓言怎么备份 服务器阵列卡维修 平面设计能转软件开发吗 国家网络安全宣传周贵州电信 游戏充值显示账号和服务器异常 浙江蓝牙软件开发价格 神武飞升转服务器多少钱 网络安全答题问答题 服务器带外管理的书籍 聊天服务器设置图片 网络安全与防范设计 ftp客户机和服务器之间建立 Win10组织服务器怎么连 中兴机顶盒远程码未发现服务器 时代网络技术分类产品介绍 如何做一个深度学习服务器 多台服务器组成算力 数据库功能有哪些 服务器和硬盘如何匹配 福建网络安全知识竞赛 数字化电力网络安全挑战 桓台薪酬管理hr软件开发公司 怎么能做数据库管理 安宁创新软件开发 数据库的次文件拓展名 永恒之塔怀旧服哪个服务器在南边 上海承聘网络技术有限公司
0