Pandas导出Excel时长字符串ID如何预设为文本格式避免被截断
问题特性说明
该现象是Excel的正常特性,不属于bug。
Excel的数值类型默认精度上限为15位,当单元格为默认「常规」格式时,纯数字组成的字符串会被Excel自动识别为数值类型存储。长度超过15位的数字会触发科学计数法显示,且超出15位的部分会被直接截断丢失,无法恢复。
导出时强制指定文本格式的解决方案
可以通过pandas搭配Excel写入引擎,在导出阶段直接指定对应列的单元格格式为文本,打开文件时无需手动调整,示例代码如下:
import pandas as pd # 生成示例数据 df = pd.DataFrame({'id':['10765432100123456789','10765432100123456788','10023']}) # 初始化Excel写入对象,指定使用xlsxwriter引擎 writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') df.to_excel(writer, index=False, sheet_name='Sheet1') # 获取工作簿、工作表对象 workbook = writer.book worksheet = writer.sheets['Sheet1'] # 定义文本格式 text_format = workbook.add_format({'num_format': '@'}) # 将A列(id列)设置为文本格式,列宽设为20避免内容显示不全 worksheet.set_column('A:A', 20, text_format) # 写入并保存文件 writer.close()
如果运行提示缺少xlsxwriter依赖,可通过pip install xlsxwriter安装。
如果偏好使用openpyxl作为写入引擎,也可以通过操作工作表的column_dimensions属性设置对应列的数字格式为'@'(即文本格式),逻辑一致。
内容的提问来源于stack exchange,提问作者perde
相关产品推荐
相关产品推荐

