对比Excel学openpyxl系列之设置excel数字和条件格式

数字格式

要 对 数 字 的 显 示 格 式 进 行 调 整 , 需 要 用 到number_format属性,具体形式如下:
在这里插入图片描述

from openpyxl import Workbook
import datetime
wb=Workbook()
ws=wb.active
ws['A2']=1
ws['A2'].number_format='General'#常规格式

ws['A3']=1
ws['A3'].number_format='0.00'#保留两位小数


ws['A3']=1
ws['A3'].number_format='0.0%'#设置成百分比格式

ws['A4']=100000
ws['A4'].number_format='#,##0'#设置千分位格式

ws['A5']=100000
ws['A5'].number_format='0.00E+00'#科学计数法

ws['A6']=datetime.datetime(2018,3,20,10,20,39)
ws['A6'].number_format='mm-dd-yy'#日期格式


ws['A7']=datetime.datetime(2018,3,20,10,20,39)
ws['A7'].number_format='h:mm:ss'#时间格式
wb.save(r'C:\Users\mac\Desktop\test10.xlsx')

在这里插入图片描述

条件格式

Excel中的条件格式设置主要包括突出显示单元格规则、数据条、色阶、图标集4种类型:
在这里插入图片描述

单元格规则

在Excel中要对单元格进行突出显示设置,先选中需要设置的单元格,然后依次点击“开始”选项卡中的“条件格式>突出显示单元格”命令,选择要设置的条件,满足条件的单元格会被突出显示。
在 Python 中 要 对 单 元 格 进 行 突 出 显 示 设 置 , 需 要 用 到
conditional_formatting属性,具体的使用形式如下:

ws.conditional_formatting.add('A1:B10',rule)
#ws表示整个工作簿,,a1:b10是设置格式的单元格区域

rule表示具体的条件,有一个具体的函数为CellIsRule()。

CellIsRule(operator='lessThan',formula=['C$1'],fill=redFill)
  • operator表示具体的条件类型是什么,可选的参数值及对应的类型如图在这里插入图片描述

  • formula表示具体的条件类型需要满足的条件值

  • fill表示对满足条件的单元格突出显示的设置,方法就是4单元格填充中介绍的方法

from openpyxl import Workbook
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFill

wb=Workbook()
ws=wb.active

data=[[10,20],[19,30],[10,30]]
for r in data:
    ws.append(r)
rule1=CellIsRule(operator='lessThan',formula=[15],fill=PatternFill(end_color='FFFF2100'))#小于15
rule2=CellIsRule(operator='between',formula=[10,20],fill=PatternFill(end_color='FFFF2100'))#在10与20之间

ws.conditional_formatting.add('A1:A3',rule1)
ws.conditional_formatting.add('B1:B3',rule2)
wb.save(r'C:\Users\mac\Desktop\test11.xlsx')

在这里插入图片描述

数据条

在Excel中,如果要对数据进行数据条格式的设置,则先选中需要设置的单元格,然后依次点击“开始”选项卡中的“条件格式>数据条”命令,在弹出的下拉菜单中选择需要的样式。
在 Python 中 要 对 单 元 格 进 行 数 据 条 设 置 , 也 需 要 用 到conditional_formatting属性,还需要用到DataBarRule()函数。
在这里插入图片描述

  • start_type对应Excel中的最小值类型,可选的参数值及对应的含义如表在这里插入图片描述

  • start_value用于指定start_type的值

  • end_type和end_value用于设置最大值类型和其对应的值

  • color用于设置数据条的颜色

  • showValue用于设置是否显示数据条上的数字

from openpyxl import Workbook
from openpyxl.formatting.rule import DataBarRule

wb = Workbook()
ws = wb.active

data = [[61,16],
        [69,67],
        [48,78],
        [69,43],
        [39,78],
        [15,13],
        [99,90],
        [46,87],
        [45,44],
        [91,37]]
for r in data:
    ws.append(r)

rule = DataBarRule(start_type='min',  end_type='max',
                    color="FF638EC6", showValue=True)
    
ws.conditional_formatting.add('A1:A10',rule)

wb.save('DataBar1.xlsx')

当最小值类型选择了min后,就不需要给start_value赋任何值了,最大值也是同理。

色阶

色阶设置是指将数据按照不同值的大小展示为不同颜色的设置方法。
在这里插入图片描述
在Python中要进行色阶设置,也需要用到conditional_formatting属性,还需要用到ColorScaleRule()函数。
在这里插入图片描述

  • start_type表示最小值的类型,可选参数值与数据条设置中可选的参数值是一样的。
  • start_value表示最小值对应的值。
  • start_color表示最小值对应的颜色。
  • mid表示中间值的情况。
  • end表示最大值的情况。
  • 如果设置为双色刻度,省略mid相关参数即可。
import numpy as np
from openpyxl import Workbook
from openpyxl.formatting.rule import ColorScaleRule

wb = Workbook()
ws = wb.active

data = [[61,16],
        [69,67],
        [48,78],
        [69,43],
        [39,78],
        [15,13],
        [99,90],
        [46,87],
        [45,44],
        [91,37]]
for r in data:
    ws.append(r)
    
ws.conditional_formatting.add('A1:A10',
             ColorScaleRule(start_type='min', start_color='FFFFF0F5',
                           end_type='max', end_color='FFFF7F00')
                          )

ws.conditional_formatting.add('B1:B10',
                ColorScaleRule(start_type='percentile', start_value=10, start_color='FFFFE4E1',
                            mid_type='percentile', mid_value=50, mid_color='FFFFC1C1',
                            end_type='percentile', end_value=90, end_color='FFFF3030')
                              )
wb.save(r'ColorScale.xlsx')

图标集

指将数据用图标的形式展示
在Python中要设置图标集,也需要用到conditional_formatting属性,还需要用到IconSet()函数。函数形式如下:
在这里插入图片描述

  • iconSet用于指明图标类型,可选的参数值及对应的图标类型在这里插入图片描述

  • percent用于指明不同条件的类型,可选的参数值与前面条件格式中的值的类型是一致的。

  • cfvo用于指明不同条件需要满足的值,如果有3个条件,那么在cfvo的列表中放3个值就可以,如果有4个条件就放4个值。

  • showValue用于设置是否展示图标对应的值,False表示不展示数值,True表示展示具体数值。

  • reverse用于设置是否将图标进行反转,False表示不进行反转,True表示进行反转。

from openpyxl import Workbook
from openpyxl.formatting.rule import IconSetRule
from openpyxl.formatting.rule import ColorScaleRule

wb = Workbook()
ws = wb.active

data = [[61,16],
        [69,67],
        [48,78],
        [69,43],
        [39,78],
        [15,13],
        [99,90],
        [46,87],
        [45,44],
        [91,37]]
for r in data:
    ws.append(r)
    

rule1 = IconSetRule('3Flags', 'percent', [0,30,50], showValue=True, reverse=False)
rule2 = IconSetRule('3Arrows', 'percent', [0,30,50], showValue=False, reverse=False)

ws.conditional_formatting.add('A1:A10',rule1)
ws.conditional_formatting.add('B1:B10',rule2)

wb.save(r'IconSet.xlsx')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41867184/article/details/125552707