使用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
相关产品推荐
相关产品推荐

