如何使用xlwings动态读取共享驱动器中带当日日期命名的Excel文件?
解决xlwings动态加载每日日期命名Excel文件的问题
首先,你的问题出在字符串的格式化方式上——直接在字符串里写{date.today()}不会自动解析成对应的日期字符串,而且date.today()返回的是日期对象,需要先转换成你文件名里的YYYYMMDD格式才行。
下面是修正后的完整代码,还加入了实用的异常处理逻辑:
from datetime import date import xlwings as xw import pandas as pd # 把当日日期转换成文件名需要的YYYYMMDD格式字符串 today_date_str = date.today().strftime("%Y%m%d") # 用原始f-string拼接完整文件路径,避免反斜杠被转义 file_path = fr"I:\Analytics\dailysummary_{today_date_str}.xlsx" try: workbook = xw.Book(file_path) sheet1 = workbook.sheets['OutputTable'].used_range.value dailydata = pd.DataFrame(sheet1) print("当日日报文件加载成功!") # 这里可以添加你的后续数据处理代码 except FileNotFoundError: print(f"提示:未找到文件 {file_path},请确认文件已上传到共享驱动器或日期格式是否匹配。") except Exception as e: print(f"加载文件时出现未知错误:{e}")
关键细节说明:
- 日期格式化:
strftime("%Y%m%d")是核心,它能把date.today()返回的日期对象精准转换成你需要的YYYYMMDD格式字符串。 - 路径拼接:用
fr""(原始f-string)可以确保共享驱动器路径里的反斜杠不会被Python当成转义字符,避免路径识别错误。 - 异常处理:加入
try-except块后,就算当天的日报还没生成(比如还没上传到共享盘),代码也会给出友好提示,而不是直接崩溃。
如果需要加载前一天的日报(比如早上上班时要处理前一天的文件),只需要稍微调整日期逻辑:
from datetime import date, timedelta # 生成前一天的日期字符串 yesterday_date_str = (date.today() - timedelta(days=1)).strftime("%Y%m%d") file_path = fr"I:\Analytics\dailysummary_{yesterday_date_str}.xlsx"
内容的提问来源于stack exchange,提问作者spcol
相关产品推荐
相关产品推荐

