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

如何让CSV文件中不同小数位数的数值在Excel中正常显示

问题原因

CSV是纯文本格式,本身不存储单元格格式信息。Excel打开CSV文件时会默认将符合数值格式的文本自动转换为数值类型,使用通用格式展示,会自动省略末尾无意义的小数位,因此你在记事本里看到的15、15.0、15.00等原始文本会被统一识别为数值15,显示格式不符合预期。

解决方案

方案1:使用Python操作Excel的库直接生成xlsx文件(最稳定)

直接生成Excel原生格式文件,为每个单元格单独设置数值和显示格式,打开即可符合要求,不会出现格式丢失问题,可使用openpyxl库实现,示例代码如下:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# A1:显示为整数15
ws['A1'] = 15
ws['A1'].number_format = 'General'

# A2:显示为1位小数15.0
ws['A2'] = 15.0
ws['A2'].number_format = '0.0'

# A3:显示为2位小数15.00
ws['A3'] = 15.00
ws['A3'].number_format = '0.00'

# A4:显示为3位小数15.000
ws['A4'] = 15.000
ws['A4'].number_format = '0.000'

wb.save('目标文件.xlsx')

方案2:调整CSV导出规则,强制Excel识别为文本格式

如果必须导出CSV格式,可以在写入数值字符串时添加特殊标记,让Excel打开时将内容识别为文本,保留原始显示效果,两种常用实现方式如下:

import csv

data = ['15', '15.0', '15.00', '15.000']

# 方式1:给数值字符串加制表符前缀
with open('test1.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    for item in data:
        writer.writerow([f'\t{item}'])

# 方式2:用="数值"格式包裹内容
with open('test2.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f, quoting=csv.QUOTE_NONE, escapechar='\\')
    for item in data:
        writer.writerow([f'="{item}"'])

该方案缺点是导出的单元格内容为文本类型,后续需要做数值计算时要额外转换格式。

方案3:不改动导出文件,打开CSV时手动调整Excel导入设置

  • 打开Excel软件,点击「数据」选项卡→「获取外部数据」→「自文本/CSV」,选择你导出的CSV文件
  • 在导入向导的第三步,选中对应数据列,将列数据格式设置为「文本」,完成导入后即可保留原始的字符串显示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:06:04