在openpyxl中更改整个列的number_format

这篇文章介绍了如何在Python的Openpyxl库中,通过一行代码实现对整个列的数字格式一次性更改,避免了逐单元格操作的繁琐,适用于大量数据处理。作者提到了针对已创建单元格的特定解决方案和注意事项。
部署运行你感兴趣的模型镜像

在openpyxl中更改整个列的number_format
发布于2020-12-15 09:58 阅读(1572) 评论(0) 点赞(6) 收藏(5)

在Python中,使用Openpyxl,是否可以更改整个列的数字格式?

目前,我一次只能更改一个单元格:

wb = openpyxl.load_workbook(xlsxFile)
ws = wb['Tasks']
ws.cell(9, 10).number_format = u'#,##0.00€'
对于有格式的格式化,有一个使用范围的简单解决方案:

ws.conditional_formatting.add('I2:%s' % row, openpyxl.formatting.rule.CellIsRule(operator='lessThan', formula=['0'], font=redFont))

我从python脚本填充此xlsx文件中的数据,因此一次可以执行一个单元格,但我想更改number_format多列和几百行的条件格式…

解决方案
采用:

col = ws.column_dimensions['A']
col.number_format = u'#,##0.00€'
请注意,您必须将此格式应用于Excel已创建的单元格。否则,您必须逐个单元地进行迭代。这是文档

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

这里改一下,我目前传入的二维数组,第一为 Z2 后面都是条件 现在好像有组合,导致我第一组了很长的数据,还不是我要的# 写入check def write_to_excel(self, file_path, valid_combinations): try: wb = load_workbook(file_path) if "check" in wb.sheetnames: wb.remove(wb["check"]) except FileNotFoundError: wb = Workbook() if "Sheet" in wb.sheetnames: wb.remove(wb["Sheet"]) ws = wb.create_sheet("check") # 导入数字格式库 from openpyxl.styles import numbers # 写入头(添加格式设置) ws.cell(row=1, column=1, value="Z2").number_format = numbers.FORMAT_TEXT if valid_combinations: for col in range(2, len(valid_combinations[0]) + 2): index = col - 1 # 计算索引,从1开始(例如,col=2 -> index=1) value = "条件_" + str(index) # 生成动态值,如"条件_1" ws.cell(row=1, column=col, value=value).number_format = numbers.FORMAT_TEXT # 写入数据(添加格式设置) for r_idx, row_data in enumerate(valid_combinations, start=2): # 拼接值(保持原格式设置) combined_value = ''.join(map(str, row_data)) cell = ws.cell(row=r_idx, column=1, value=combined_value) cell.number_format = numbers.FORMAT_TEXT # 设置文本格式 # 原始数据写入(关键修改:添加格式设置) for c_idx, cell_value in enumerate(row_data, start=2): cell = ws.cell(row=r_idx, column=c_idx, value=cell_value) # 根据数据类型设置格式 if isinstance(cell_value, (int, float)): # 整数格式(无小数位) cell.number_format = '0' if cell_value.is_integer() else '0.00' else: # 文本格式 cell.number_format = numbers.FORMAT_TEXT wb.save(file_path)
最新发布
10-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值