You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:44:09