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

使用Python Pandas生成Excel:撇号未被识别为特殊字符且未自动消失问题

解决Pandas导出Excel时文本被自动转日期的问题

方法1:指定单元格为文本格式

直接通过Excel引擎设置目标列的格式为纯文本,从根源避免Excel将内容识别为日期,无需添加前置撇号。

示例代码(使用xlsxwriter引擎):

import pandas as pd

# 构造数据
data = {"财月": ["05-Nov", "06-Dec", "01-Jan"]}
df = pd.DataFrame(data)

with pd.ExcelWriter("财月数据.xlsx", engine="xlsxwriter") as writer:
    df.to_excel(writer, index=False, sheet_name="Sheet1")
    workbook = writer.book
    worksheet = writer.sheets["Sheet1"]
    
    # 定义纯文本格式
    text_format = workbook.add_format({"num_format": "@"})
    # 将格式应用到财月列(对应Excel的A列,索引从0开始)
    worksheet.set_column(0, 0, None, text_format)

方法2:用公式强制文本显示

如果需要保留类似前置标记的逻辑,可通过写入Excel公式,让内容自动以纯文本展示,无需手动编辑就能隐藏标记:

import pandas as pd

data = {"财月": ["05-Nov", "06-Dec", "01-Jan"]}
df = pd.DataFrame(data)

# 转换为Excel文本公式格式
df["财月"] = df["财月"].apply(lambda x: f'="\'"{x}"')

with pd.ExcelWriter("财月数据.xlsx", engine="openpyxl") as writer:
    df.to_excel(writer, index=False, sheet_name="Sheet1")

导出后Excel会直接显示05-Nov,撇号不会显示,透视表也能正确识别内容。

方法3:用openpyxl直接写入字符串

通过openpyxl直接操作单元格,强制设置数据类型为字符串,实现更精细的控制:

from openpyxl import Workbook
import pandas as pd

data = {"财月": ["05-Nov", "06-Dec", "01-Jan"]}
df = pd.DataFrame(data)

wb = Workbook()
ws = wb.active

# 写入表头
ws.append(df.columns.tolist())

# 遍历数据,强制以字符串类型写入单元格
for row in df.itertuples(index=False):
    ws.append([str(cell) for cell in row])

wb.save("财月数据.xlsx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:35:22