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

使用Pandas pd.read_excel读取含#开头公式错误单元格需保留文本而非转NA

保留Excel中公式错误文本的Pandas读取方法

问题场景

使用pd.read_excel读取Excel文件时,文件内包含#NA、#DIV/0!、#Value这类公式错误(或文本形式的错误值),默认会被转换为NaN,需求是将这类内容保留为原始文本。曾尝试单独使用openpyxl,但因需处理多种Excel格式,更倾向于使用pd.read_excel相关的方案。

解决方案

通过openpyxl引擎读取单元格的显示文本(display_value),替代默认的单元格值(value),以此保留错误文本。具体实现需手动遍历工作表单元格并提取display_value,再转换为DataFrame。

代码示例

import pandas as pd
from openpyxl import load_workbook

# 加载工作簿,data_only=False确保保留公式相关的显示信息
wb = load_workbook('Book1.xlsx', data_only=False)
# 指定目标工作表
ws = wb['Sheet1']

# 提取表头行
headers = [cell.value for cell in ws[1]]
# 提取数据行,每行取单元格的显示文本
data_rows = []
for row in ws.iter_rows(min_row=2):  # min_row=2跳过表头
    data_rows.append([cell.display_value for cell in row])

# 转换为Pandas DataFrame
df = pd.DataFrame(data_rows, columns=headers)

说明

  • 公式错误的单元格(如#DIV/0!)的value属性为None,因此默认读取会转为NaN;而display_value属性会返回单元格实际显示的文本内容。
  • 此方法兼容多种Excel格式(xlsx、xlsm等),既利用了openpyxl的精确读取能力,又能通过Pandas进行后续数据处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:45:13