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

Python:如何强制字符串保留格式不被Excel转换为日期?

解决Excel自动将"4/10"转为日期的问题

针对你使用的pandas、xlwings、openpyxl三个库,分别提供以下解决方案,确保"4/10"这类物料名称以纯字符串形式写入Excel:

使用pandas的解决方案

有两种可靠方式:

  • 方式一:在字符串前添加英文单引号('),Excel会自动识别为文本格式,且最终单元格不会显示单引号
import pandas as pd

# 构造数据时给目标字符串前加单引号
df = pd.DataFrame({'物料名称': ["'4/10", "'5/20", "A-123"]})
df.to_excel('物料清单.xlsx', index=False)
  • 方式二:借助openpyxl引擎,写入后设置单元格格式为文本
import pandas as pd
from openpyxl import load_workbook

# 先写入原始数据
df = pd.DataFrame({'物料名称': ["4/10", "5/20", "A-123"]})
df.to_excel('物料清单.xlsx', index=False, engine='openpyxl')

# 加载工作簿并设置目标列格式为文本
wb = load_workbook('物料清单.xlsx')
ws = wb.active
# 假设物料名称在B列,跳过表头设置整列格式
for cell in ws['B'][1:]:
    cell.number_format = '@'

wb.save('物料清单.xlsx')

使用xlwings的解决方案

xlwings可以直接先设置单元格格式为文本,再写入内容,从根源避免Excel自动转换:

import xlwings as xw

# 打开或新建工作簿
wb = xw.Book('物料清单.xlsx')
ws = wb.sheets[0]

# 可选:设置整列为文本格式
ws.range('A:A').number_format = '@'
# 写入表头
ws['A1'].value = '物料名称'

# 写入目标字符串
ws['A2'].value = "4/10"
ws['A3'].value = "5/20"

wb.save()
wb.close()

使用openpyxl的解决方案

直接创建单元格并指定文本格式,再写入数据:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 设置表头
ws['A1'] = '物料名称'

# 方式一:单个单元格设置格式后写入
cell = ws['A2']
cell.number_format = '@'
cell.value = "4/10"

# 方式二:设置整列为文本格式后批量写入
ws.column_dimensions['A'].number_format = '@'
ws['A3'] = "5/20"
ws['A4'] = "B-456"

wb.save('物料清单.xlsx')

内容的提问来源于stack exchange,提问作者II-SARIP-II

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:46:07