在openpyxl中更改整个列的number_format

在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已创建的单元格。否则,您必须逐个单元地进行迭代。这是文档
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#!/bin/env python import numpy as np import pandas as pd import openpyxl,os df_csv = pd.read_csv(r'Permance_a.csv',index_col=0,encoding='utf-8') df_csv.to_excel(r'Permance_a.xlsx') # 打开Excel文件 wb = openpyxl.load_workbook('Permance_a.xlsx') # 选择第一个工作表 ws = wb.active # 循环遍历每一个单元格 for row in ws.iter_rows(): for cell in row: # 判断单元格是否包含% if '%' in str(cell.value): # 将单元格格式设置为数字格式 cell.number_format = '0.00%' # 将单元格值除以100并重新赋值给单元格 cell.value = float(cell.value.strip('%')) / 100 # 保存Excel文件 wb.save('Permance_a.xlsx') # 源表格和目标表格的文件名 source_file = r'Permance_a.xlsx' target_file = r'Permance.xlsx' source_end_col = 8 # 结束 source_start_col = 5 # 开始 source_start_row = [2,12,22,32] source_end_row = [11,21,31,41] target_end_col = 6 # 结束 target_start_col = 3 # 开始 target_start_row = [7,35,21,49] target_end_row = [16,44,30,58] # 打开两个工作簿 wb1 = openpyxl.load_workbook(source_file) ws1 = wb1.active target_ws_name = 'sd' + source_file[-6] wb2 = openpyxl.load_workbook(target_file) wb2.active.title = target_ws_name ws2 = wb2.active # 将源表格的数据覆盖到目标表格 for i in range(len(source_start_row)): for row in range(source_start_row[i], source_end_row[i]+1): for col in range(source_start_col, source_end_col+1): value = ws1.cell(row=row, column=col).value ws2.cell(row=target_start_row[i]+row-source_start_row[i], column=target_start_col+col-source_start_col, value=value) # 保存目标表格 wb2.save(target_file) 修改以上代码,将目标文件数据引用源工作明修改为target_ws_name
05-24
修改后的代码如下: ``` #!/bin/env python import numpy as np import pandas as pd import openpyxl,os df_csv = pd.read_csv(r'Permance_a.csv',index_col=0,encoding='utf-8') df_csv.to_excel(r'Permance_a.xlsx') # 打开Excel文件 wb = openpyxl.load_workbook('Permance_a.xlsx') # 选择第一个工作表 ws = wb.active # 循环遍历每一个单元格 for row in ws.iter_rows(): for cell in row: # 判断单元格是否包含% if '%' in str(cell.value): # 将单元格格式设置为数字格式 cell.number_format = '0.00%' # 将单元格值除以100并重新赋值给单元格 cell.value = float(cell.value.strip('%')) / 100 # 保存Excel文件 wb.save('Permance_a.xlsx') # 源表格和目标表格的文件名 source_file = r'Permance_a.xlsx' target_file = r'Permance.xlsx' source_end_col = 8 # 结束 source_start_col = 5 # 开始 source_start_row = [2,12,22,32] source_end_row = [11,21,31,41] target_end_col = 6 # 结束 target_start_col = 3 # 开始 target_start_row = [7,35,21,49] target_end_row = [16,44,30,58] # 打开两个工作簿 wb1 = openpyxl.load_workbook(source_file) ws1 = wb1.active # 修改目标工作表名 target_ws_name = 'sd' + source_file[-6] wb2 = openpyxl.load_workbook(target_file) wb2[target_ws_name].title = target_ws_name ws2 = wb2[target_ws_name] # 将源表格的数据覆盖到目标表格 for i in range(len(source_start_row)): for row in range(source_start_row[i], source_end_row[i]+1): for col in range(source_start_col, source_end_col+1): value = ws1.cell(row=row, column=col).value ws2.cell(row=target_start_row[i]+row-source_start_row[i], column=target_start_col+col-source_start_col, value=value) # 保存目标表格 wb2.save(target_file) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值