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

如何使用Python(openpyxl)将多工作表指定列设置为6位小数格式

问题背景

使用Python的openpyxl库处理多工作表Excel文件时,需按规则为指定列设置6位小数数字格式,具体规则:

  • Sheet1:E、F、G列设置为6位小数格式
  • Sheet2:F、G、H、I列设置为6位小数格式
    原有代码仅能实现Sheet1的E列设置7位小数格式,无法满足全部需求。
原有代码问题点
  • 小数位数配置错误:格式字符串写为'0.0000000',对应7位小数,不符合6位要求
  • 仅硬编码处理Sheet1的E列,未覆盖其他工作表和目标列
  • 逻辑扩展性差,新增工作表/列需要重复编写遍历代码
修改后完整代码
import os
import openpyxl

path = os.getcwd()
ipath = os.path.join(path,"Input")
files = os.listdir(ipath)
opath = os.path.join(path,"Output")
filepath1 = r"C:\Users\bubai\Desktop\Python_Try_projrct\off\Input\ds3.xlsx"
wb1 = openpyxl.load_workbook(filepath1)

# 打印所有工作表名
sheets = wb1.sheetnames
print(sheets)

# 配置映射:key为工作表名,value为该表需要设置6位小数的列列表
sheet_config = {
    "Sheet1": ["E", "F", "G"],
    "Sheet2": ["F", "G", "H", "I"]
}
# 6位小数对应的标准数字格式
six_decimal_format = '0.000000'

# 遍历配置批量处理
for sheet_name, target_cols in sheet_config.items():
    # 自动跳过文件中不存在的工作表,避免运行报错
    if sheet_name not in wb1.sheetnames:
        continue
    ws = wb1[sheet_name]
    for col in target_cols:
        for cell in ws[col]:
            cell.number_format = six_decimal_format
            # 不需要打印单元格值可直接注释下行
            print(cell.value)

wb1.save(filepath1)

提示:后续如果需要新增工作表或调整处理列,只需要修改sheet_config配置字典即可,无需改动核心遍历逻辑

效果参考

Sheet1设置效果
Sheet2设置效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:27:34