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

如何让Pandas导出的Excel中指定列以文本格式保存?

解决Pandas导出Excel时指定列保存为文本格式的问题

我正在用Python的Pandas处理Paigo数据,要生成PaigoPagos.xls输出文件,参考FormatImportationPayments.xls的列格式。现在需要把输出文件中的N CLIENTE、N PRODUCTO、MONTO、N RECIBO列强制保存为文本格式,尝试过astype(str)转换但导出后仍为数值格式,调整Excel写入选项也没解决。


核心原因

astype(str)仅在Pandas层面将数据转为字符串,但Excel会自动解析单元格内容,把看起来像数值的字符串重新识别为数值类型,因此需要直接在Excel文件中设置单元格的文本格式。

解决方案1:导出为XLSX格式(推荐,使用xlsxwriter引擎)

首先安装依赖:

pip install xlsxwriter

修改导出代码,通过指定单元格格式强制文本类型:

import pandas as pd

# 假设df_neotel_payments是处理完成的DataFrame
text_columns = ['N CLIENTE', 'N PRODUCTO', 'MONTO', 'N RECIBO']

# 使用xlsxwriter引擎创建ExcelWriter
with pd.ExcelWriter('PaigoPayments<date>.xlsx', engine='xlsxwriter') as writer:
    df_neotel_payments.to_excel(writer, index=False, sheet_name='Sheet1')
    
    # 获取工作簿和工作表对象
    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    
    # 创建文本格式(num_format:@ 表示文本格式)
    text_format = workbook.add_format({'num_format': '@'})
    
    # 遍历目标列,设置整列格式
    for col_name in text_columns:
        # 获取列的索引位置
        col_idx = df_neotel_payments.columns.get_loc(col_name)
        # 设置该列的格式,第二个参数表示结束列(和起始列相同即整列)
        worksheet.set_column(col_idx, col_idx, None, text_format)

解决方案2:导出为XLS格式(使用xlwt引擎)

如果必须导出为.xls格式,使用xlwt引擎:
首先安装依赖:

pip install xlwt

修改导出代码:

import pandas as pd
import xlwt

# 假设df_neotel_payments是处理完成的DataFrame
text_columns = ['N CLIENTE', 'N PRODUCTO', 'MONTO', 'N RECIBO']

# 创建文本格式样式
text_style = xlwt.easyxf('num_format_str:@')

# 使用xlwt引擎创建ExcelWriter
with pd.ExcelWriter('PaigoPayments<date>.xls', engine='xlwt') as writer:
    df_neotel_payments.to_excel(writer, index=False, sheet_name='Sheet1')
    
    # 获取工作表对象
    worksheet = writer.sheets['Sheet1']
    
    # 遍历目标列,设置整列样式
    for col_name in text_columns:
        col_idx = df_neotel_payments.columns.get_loc(col_name)
        worksheet.col(col_idx).style = text_style

注意事项

  • 若目标列包含前导零(如客户编号00123),astype(str)转换后要确保前导零不丢失,再配合上述格式设置,就能完全保留文本格式。
  • 避免在字符串前加单引号的临时方法,这种方式会在Excel单元格中显示多余的单引号,影响后续使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:25:09