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

如何用Python读取.xlsx保留数字格式并导出为txt/csv

Python读取.xlsx保留原数字格式导出为txt/csv实现方案

完全不需要自行开发格式转换器,直接用openpyxl库即可实现需求,该库可以直接读取每个单元格在Excel界面实际显示的格式化内容,不需要提前预设列格式,哪怕同一列存在数十种不同数字格式也能完整保留。

核心原理

Pandas读取xlsx时默认提取单元格的底层存储数值,会自动剥离所有单元格级别的货币符号、小数位规则、自定义格式配置,因此无法满足需求。而openpyxl可以直接解析xlsx文件内嵌的单元格格式规则,返回用户在Excel中看到的最终显示文本,不存在格式丢失问题。

实现步骤

  • 安装依赖库
    执行命令安装所需依赖:
    pip install openpyxl

  • 参考实现代码

from openpyxl import load_workbook
import csv

# 加载目标xlsx文件,注意必须保持data_only=False参数
wb = load_workbook(filename="你的源文件路径.xlsx", data_only=False)
# 选择需要读取的工作表,读取第一个工作表用wb.active,指定工作表可替换为wb["工作表名称"]
ws = wb.active

# 逐行读取所有单元格的格式化显示值
formatted_data = []
for row in ws.iter_rows(values_only=False):
    current_row = [cell.display_value for cell in row]
    formatted_data.append(current_row)

# 导出为csv格式(用utf-8-sig编码避免Excel打开乱码)
with open("输出结果.csv", "w", newline="", encoding="utf-8-sig") as csv_file:
    csv_writer = csv.writer(csv_file)
    csv_writer.writerows(formatted_data)

# 如需导出为txt格式,可使用以下代码,分隔符可根据需求替换为制表符、逗号等
with open("输出结果.txt", "w", encoding="utf-8") as txt_file:
    for line in formatted_data:
        txt_file.write("\t".join([str(cell_content) for cell_content in line]) + "\n")

注意事项

  • 加载工作簿时请勿修改data_only=False的配置,否则会丢失格式关联,返回原始数值
  • 读取到的cell.display_value直接是Excel中展示的最终文本,例如货币格式$45.890924、百分比、千分位数值、自定义格式日期都会原样返回,不需要提前对列做格式分类预设
  • 写入文件时直接按字符串类型写入即可,不要额外做数值类型转换,避免格式被自动转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:27:21