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

如何读取含动态生成日期路径的文件及解决Excel V31单元格读取失败问题

解决通过动态生成路径读取Excel文件V31单元格的问题

代码存在的问题

  • 未导入pandas库,代码中使用pd别名但未声明
  • 调用日期生成函数时未加括号:time是函数对象,必须写成time()才能获取返回的日期字符串
  • 路径拼接逻辑错误:原始字符串拼接时容易出现分隔符问题,且C:\User\大概率是笔误,应为C:\Users\
  • 单元格读取方式错误:sheetX['V31']是按列名读取数据,但V31是Excel单元格地址,不是列名

修正后的代码(使用pandas)

import datetime
import pandas as pd
import os

def get_last_bus_day():
    lastBusDay = datetime.datetime.today()
    shift = datetime.timedelta(max(1, (lastBusDay.weekday() + 6) % 7 - 3))
    lastBusDay = lastBusDay - shift
    return lastBusDay.strftime("%Y%m%d")

def open_file():
    # 基础路径和日期
    base_path = r"C:\Users"
    date_str = get_last_bus_day()
    # 使用os.path.join拼接路径,避免分隔符问题
    file_path = os.path.join(base_path, date_str, "aaa.xls")
    
    # 读取Excel文件
    xls = pd.ExcelFile(file_path)
    sheetX = xls.parse(0)
    
    # V列是第21列(A=0,B=1...V=20),31行对应索引30(pandas行索引从0开始)
    var1 = sheetX.iloc[30, 20]
    print(var1)

open_file()

备选方案(使用win32com直接读取单元格地址)

如果需要直接按V31这种单元格地址读取,用你导入的win32com更直接:

import datetime
import win32com.client as win32
import os

def get_last_bus_day():
    lastBusDay = datetime.datetime.today()
    shift = datetime.timedelta(max(1, (lastBusDay.weekday() + 6) % 7 - 3))
    lastBusDay = lastBusDay - shift
    return lastBusDay.strftime("%Y%m%d")

def open_file():
    base_path = r"C:\Users"
    date_str = get_last_bus_day()
    file_path = os.path.join(base_path, date_str, "aaa.xls")
    
    # 启动Excel应用
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    excel.Visible = False  # 后台运行,不打开窗口
    workbook = excel.Workbooks.Open(file_path)
    sheet = workbook.Worksheets(1)  # 第一个工作表(Excel里索引从1开始)
    
    # 直接读取V31单元格
    var1 = sheet.Range("V31").Value
    print(var1)
    
    # 关闭资源
    workbook.Close(SaveChanges=False)
    excel.Quit()

open_file()

内容的提问来源于stack exchange,提问作者Sea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:17