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

Pandas读取Excel公式单元格返回NaN问题排查(关联Google Drive上下传场景)

问题成因及解决方案

核心根本原因

  • Pandas读取Excel含公式单元格时,默认读取的是文件中预存的公式计算缓存值,本身不具备实时计算Excel公式的能力。
  • 你通过代码直接上传Excel文件到Google Drive时,Drive不会自动触发文件内公式的重新计算,也不会将计算结果写入文件缓存区域,导致下载下来的文件中公式对应的缓存值为空,Pandas读取时就返回NaN。
  • 手动在Drive中打开并保存文件时,Google的在线表格引擎会自动完成所有公式的计算,将结果写入文件缓存,此时下载的文件就带有有效缓存值,Pandas可以正常读取。

附带问题点

你当前上传代码中的MIME类型配置错误:你上传的是xlsm格式的宏文件,但使用的MIME类型是普通xlsx的application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,正确的xlsm格式MIME类型应为application/vnd.ms-excel.sheet.macroEnabled.12,类型不匹配也可能导致Drive无法正确识别文件格式,跳过公式计算流程。

可落地解决方案

  • 方案1:修正上传MIME类型,同时本地读取文件时主动触发公式计算
    更换读取引擎为openpyxl,加载文件后先触发全表公式计算,再读取数据,参考代码:
    from openpyxl import load_workbook
    import pandas as pd
    
    wb = load_workbook(filename=file_loc, data_only=False, keep_links=True)
    # 触发全表公式自动计算
    wb.calculation.calcMode = 'auto'
    wb.calculate()
    # 读取对应工作表转换为DataFrame即可正常获取公式计算结果
    ws = wb['MONITORAMENTO']
    
  • 方案2:上传文件后调用Google Workspace API触发文件重新计算,确保公式结果缓存写入文件后再下载使用
  • 方案3:如果业务允许,可将Excel文件转换为Google Sheets格式存储在Drive中,读取时直接调用Sheets API获取计算后的单元格值,无需处理Excel公式缓存问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:06