数字格式
要 对 数 字 的 显 示 格 式 进 行 调 整 , 需 要 用 到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')