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

如何实现pandas DataFrame定时读取Excel,仅V列值变化时打印数据

Excel固定间隔轮询检测V列变化触发打印实现方案

实现逻辑

  • 首次运行先读取目标范围数据,存储V列的初始值作为对比基准
  • 通过无限循环+固定时长休眠实现定时轮询
  • 每轮读取数据后单独提取V列,和上一轮存储的V列值做全量对比
  • 仅当V列存在数值差异时,才打印当前读取到的全量数据,同时更新对比基准值
  • 增加基础异常捕获,避免文件被占用、读取失败时程序直接崩溃

完整可运行代码

import pandas as pd
import time

# 可根据实际需求调整配置
FILE_PATH = 'Live_Data.xlsm'
SHEET = 'Sheet1'
POLL_INTERVAL = 3  # 轮询间隔,单位:秒
SKIP_ROW_COUNT = 5
READ_ROW_COUNT = 21
READ_COL_RANGE = 'B:V'

last_v_data = None

while True:
    try:
        # 读取指定范围的Excel数据,xlsm格式需指定openpyxl引擎
        current_df = pd.read_excel(
            FILE_PATH,
            sheet_name=SHEET,
            skiprows=SKIP_ROW_COUNT,
            nrows=READ_ROW_COUNT,
            usecols=READ_COL_RANGE,
            engine='openpyxl'
        )
        current_v_data = current_df['V']
        # 首次运行初始化基准值
        if last_v_data is None:
            last_v_data = current_v_data.copy()
            print("初始基准数据加载完成,开始轮询检测V列变化")
        else:
            # 检测V列是否发生变化
            if not current_v_data.equals(last_v_data):
                print("\n检测到V列数值更新,当前数据:")
                print(current_df)
                last_v_data = current_v_data.copy()
    except Exception as e:
        print(f"当前轮次读取失败:{str(e)},将在下个间隔重试")
    # 等待指定间隔后进入下一轮检测
    time.sleep(POLL_INTERVAL)

使用注意事项

  • 运行前先安装依赖库,执行命令:pip install pandas openpyxl
  • 轮询间隔不建议设置小于1秒,频繁读写文件会占用不必要的系统资源
  • 对比逻辑采用pandas的equals方法,可精准识别V列任意单元格的数值变动,不会出现漏判
  • 如果Excel正处于打开编辑的锁定状态,程序会自动跳过当前轮次,不会直接退出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:42:14