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

如何用Openpyxl将Excel文件G列设置为纯数字格式?

问题

我正在使用Openpyxl实现向已有Excel文件追加格式化DataFrame行,或在文件不存在时新建文件,代码如下:

import os
import pandas as pd
from openpyxl.utils.dataframe import dataframe_to_rows
import openpyxl

if os.path.isfile(transformed_file): #if file exists, load and append
    workbook = openpyxl.load_workbook(transformed_file)
    sheet = workbook['Sheet1']  
    for row in dataframe_to_rows(df, header=False, index=False):
        sheet.append(row)
        workbook.save(transformed_file) 
        workbook.close()
else:  # create the excel file if doesn't already exist
    with pd.ExcelWriter(path = transformed_file, engine = 'openpyxl') as writer:
        df.to_excel(writer, index=False, sheet_name = 'Sheet1')

目前打开Excel文件时,G列显示为科学计数法格式(1.23E+10),需要将该列格式设置为纯数字格式'0',请问如何基于上述代码实现?

解决方案

要将G列统一设置为纯数字格式'0',需分别处理新建文件和追加数据两种场景,同时优化原代码的不合理操作:

1. 新建文件时设置列格式

在创建新文件时,直接为G列设置数字格式,确保初始数据就以纯数字显示:

else:  # create the excel file if doesn't already exist
    with pd.ExcelWriter(path=transformed_file, engine='openpyxl') as writer:
        df.to_excel(writer, index=False, sheet_name='Sheet1')
        # 获取当前工作簿和工作表对象
        workbook = writer.book
        sheet = workbook['Sheet1']
        # 定义纯数字格式
        num_format = openpyxl.styles.NumberFormat('0')
        cell_style = openpyxl.styles.Style(number_format=num_format)
        # 应用格式到G列(对应第7列)
        sheet.column_dimensions[openpyxl.utils.get_column_letter(7)].style = cell_style

2. 追加数据时设置列格式

追加数据前先统一设置G列格式,避免新追加的数据继续使用科学计数法,同时修正原循环内频繁保存关闭的问题:

if os.path.isfile(transformed_file): #if file exists, load and append
    workbook = openpyxl.load_workbook(transformed_file)
    sheet = workbook['Sheet1']  
    # 先为G列设置纯数字格式,确保已有和新增数据格式统一
    num_format = openpyxl.styles.NumberFormat('0')
    cell_style = openpyxl.styles.Style(number_format=num_format)
    sheet.column_dimensions[openpyxl.utils.get_column_letter(7)].style = cell_style
    
    # 批量追加数据行
    for row in dataframe_to_rows(df, header=False, index=False):
        sheet.append(row)
    
    # 循环结束后统一保存并关闭工作簿
    workbook.save(transformed_file) 
    workbook.close()

关键说明

  • 原代码在循环内每次追加行都执行save和close,会大幅降低性能且可能导致文件异常,必须移到循环外部。
  • 使用openpyxl.utils.get_column_letter(7)获取G列标识,比直接写'G'更易维护(后续列位置变化时只需修改数字)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:03:30