下面是Python+xlwings制作天气预报表的完整实例教程。
1.安装xlwings
在命令行中使用以下代码安装xlwings模块:
pip install xlwings
2.在Excel中添加Python解释器
打开Excel,进入xlwings选项卡,点击add ins,在弹出的Excel插件管理器中勾选Python插件。
3.创建Excel文件
在Excel中新建一个工作簿,并将工作表重命名为“天气预报”。
4.添加Python代码
在Excel工作簿中的“天气预报”工作表中,按下Alt+F11,打开VBA编辑器。在编辑器中添加以下Python代码:
import requests
import xlwings as xw
def get_weather():
url = 'https://free-api.heweather.net/s6/weather/now'
params = {
'location': '北京',
'key': 'your_key'
}
response = requests.get(url, params=params)
response.encoding = 'utf-8'
weather = response.json()['HeWeather6'][0]['now']['cond_txt']
return weather
@xw.func
def weather_report():
weather = get_weather()
return f"今天北京天气{weather}"
在上述代码中,get_weather()函数通过调用和风天气的API获取北京的天气情况,weather_report()函数通过xlwings装饰器@xw.func把函数转化为Excel的自定义函数,具体返回值格式如”今天北京天气晴”。
5.在Excel中使用自定义函数
在Excel工作簿中的第一个单元格输入“=weather_report()”然后按下Enter。等待函数执行完毕,即可在此单元格中看到当前北京的天气情况。
示例1:批量查询多城市的天气
在get_weather()函数中添加城市名称参数,稍微修改返回值,得到以下代码:
import requests
import xlwings as xw
def get_weather(city):
url = 'https://free-api.heweather.net/s6/weather/now'
params = {
'location': city,
'key': 'your_key'
}
response = requests.get(url, params=params)
response.encoding = 'utf-8'
weather = response.json()['HeWeather6'][0]['now']['cond_txt']
return weather
@xw.func
def weather_report(city):
weather = get_weather(city)
return f"{city}今天天气{weather}"
在Excel的第一个工作表中输入所需城市名称列表,再新增一个工作表用于生成天气报告,之后在该工作表的第一个单元格中输入“=weather_report(A1)” (A1为所需城市名称单元格) 然后按下Enter即可批量查询多城市的天气情况。
示例2:自动刷新天气
修改Excel工作簿中的VBA编辑器代码,增加自动刷新功能,即自动更新天气预报在Excel中显示。示例代码如下:
import requests
import xlwings as xw
def get_weather(city):
url = 'https://free-api.heweather.net/s6/weather/now'
params = {
'location': city,
'key': 'your_key'
}
response = requests.get(url, params=params)
response.encoding = 'utf-8'
weather = response.json()['HeWeather6'][0]['now']['cond_txt']
return weather
@xw.func
def weather_report(city):
weather = get_weather(city)
return f"{city}今天天气{weather}"
@xw.sub
def refresh_weather():
wb = xw.Book.caller()
for sht in wb.sheets:
sht.calculate()
修改weather_report()函数的输入参数,添加自动化代码refresh_weather()函数,其中@sbt标记表示该函数是Excel的宏。
在Excel文件中,选择“天气预报”工作表,然后单击“激活宏”按钮来刷新天气预报。
至此,我们已经完成了Python+xlwings制作天气预报表的完整实例教程,以上示例可以根据实际需求进行修改和适应。