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

Python读取Excel文件时如何保持与原文件完全一致的格式?

Python读取Excel保留原显示格式的可行方案

你当前使用load_workbook('excelfileroute', data_only=True)的写法只能读取公式计算后的原始值,无法保留Excel中设置的数字、日期等格式化显示效果,要拿到和Excel界面显示完全一致的字符串结果,可使用以下两种方案:

方案1:openpyxl原生实现(跨平台通用)

借助openpyxl自带的单元格格式转换能力,直接将单元格值按照其配置的格式规则转换为对应显示字符串,支持绝大多数常规格式(千分位数字、标准长/短日期等),示例代码如下:

from openpyxl import load_workbook
from openpyxl.styles.numbers import format_cell

# 读取文件,data_only=True保证读取的是公式计算后的结果而非公式文本
wb = load_workbook('excelfileroute', data_only=True)
# 替换为你需要读取的工作表,也可通过wb['工作表名']指定
ws = wb.active

formatted_data = []
for row in ws.iter_rows(values_only=False):
    row_content = []
    for cell in row:
        # 生成与Excel显示完全一致的字符串
        display_text = format_cell(cell)
        row_content.append(display_text)
    formatted_data.append(row_content)

注意:如果你的Excel使用了非常冷门的自定义格式,该方法可能存在少量转换偏差。

方案2:win32com调用Excel原生能力(Windows平台首选)

如果需要100%匹配Excel的显示效果(包括特殊自定义长日期、非常规数字格式),可以直接调用本地Excel程序的接口读取单元格的Text属性,该属性返回的就是Excel界面上显示的完全一致的内容,无转换偏差,示例代码如下:

import win32com.client as win32

# 后台启动Excel程序
excel_app = win32.gencache.EnsureDispatch('Excel.Application')
excel_app.Visible = False
# 此处必须传入Excel文件的绝对路径
wb = excel_app.Workbooks.Open(r'C:\xxx\你的文件.xlsx')
# 替换为你要读取的工作表,也可通过wb.Worksheets('工作表名')指定
ws = wb.Worksheets(1)

# 获取工作表有效范围的行列数
max_row = ws.UsedRange.Rows.Count
max_col = ws.UsedRange.Columns.Count

formatted_data = []
for row_idx in range(1, max_row + 1):
    row_content = []
    for col_idx in range(1, max_col + 1):
        # Text属性为Excel界面显示的原生字符串
        display_text = ws.Cells(row_idx, col_idx).Text
        row_content.append(display_text)
    formatted_data.append(row_content)

# 释放资源,避免Excel进程残留
wb.Close(SaveChanges=False)
excel_app.Quit()

注意:该方案仅支持Windows系统,且需要本地安装微软Office Excel程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:45:02