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

