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

Pandas read_excel错误转换日期,如何保留原始数据完整性?

解决pandas读取Excel时日期自动转换的问题

问题原因

即使设置了dtype=str和parse_dates=False,openpyxl引擎仍会将Excel中存储为日期类型的单元格解析为datetime对象——因为这些单元格在Excel内部是日期格式,pandas的参数无法覆盖openpyxl对单元格类型的解析逻辑,导致原始显示的日期字符串被转换为时间戳格式。

解决方案:直接读取Excel单元格的显示文本

要1:1还原原始数据,最可靠的方式是绕过pandas的自动解析,用openpyxl直接读取每个单元格的显示文本(即Excel界面中看到的内容)。

代码实现

import openpyxl
import pandas as pd

def read_excel_raw(file_path, skip_rows=0):
    # 加载工作簿,data_only=False保留公式(若需公式计算后的值则设为True)
    wb = openpyxl.load_workbook(file_path, data_only=False)
    sheet = wb.active
    
    # 跳过指定行数,从skip_rows+1行开始读取(Excel行号从1起始)
    rows = sheet.iter_rows(min_row=skip_rows + 1)
    
    # 提取每行单元格的显示文本
    raw_data = []
    for row in rows:
        row_values = [cell.display_value for cell in row]
        raw_data.append(row_values)
    
    # 构建DataFrame,保持无表头的原始结构
    return pd.DataFrame(raw_data, header=None)

使用方式

替换原有的pd.read_excel调用,改用自定义函数读取文件:

df = read_excel_raw(file_path, skip_rows=skip_rows)

为什么这个方法有效?

cell.display_value会直接返回Excel界面中单元格显示的文本内容,无论单元格是日期、数字、字符串还是公式,都能完全还原原始显示格式,彻底避免自动类型转换带来的修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:04:53