如何使用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配置字典即可,无需改动核心遍历逻辑
效果参考


内容的提问来源于stack exchange,提问作者riya
相关产品推荐
相关产品推荐

