个性化
1.设置字体,行高列宽,合并单元格
import openpyxl
wb=openpyxl.Workbook()
ws1=wb.create_sheet(title="红")
ws2=wb.create_sheet(title="绿")
ws1.sheett_properties.tabColor="FF0000"#将sheet1颜色改为红色
ws2.sheett_properties.tabColor="00FF00"#将sheet2颜色改为绿色
ws1.row_dimensions["2"].height=200#第二行行高设置为200
ws1.colimn_dimensions["B"].width=100#B列列宽设置为100
#要注意的是,行高和列宽的单位不一样,例如这里200的行高长度实际上要小于100的列宽
ws.merge_cells("A2:C6")#合并A2到C6这个矩形内所有的单元格
ws.unmerge_cells("A2:C6")#解合单元格
#需要注意的是,解合的单元格只能是之前合并的,不能部分解合,例如ws.unmerge_cells("A2:C3")将会报错
ws1.frezze_panes="B8"#将B8左边与下边的单元格冻结,滚动进度的时候,冻结的部分始终显现
ws1.frezze_panes="A1"#解冻,即把A1作为基准就可以了。
2.设置单元格字体
openpyxl.styles.Font(参数)
参数主要有:
name 字体名称
size 字体尺寸
bold:True/False 是否加粗
italic:True/False 是否倾斜
verAlign:"None"默认/"superscript"上标/“subscript”下标
underline:"None"默认/"single"单下划线/“double”双下划线/'singleAccounting’会计用单下划线/"doubleAccounting"会计用双下划线
strike:True/False 是否显示删除线
color:字体颜色
from openpyxl import Workbook
from openpyxl.styles import Font
wb=Workbook
ws=wb.active
b2=ws['B2']
b2.value='i love you'
b_r_f=Font(bold=True,color='FF0000')
b2.font=b_r_f#加粗,字体红色
italic_strike_blue_13font=Font(size=13,italic=True,strike=True,color='0000FF')
b3=ws['B3']
b3.value='i love you,too'
b3.font=italic_strike_blue_13font#设置定义好的格式
wb.save('路径')
3.填充单元格
from openpyxl.styles import PatternFill
yellow_fill=Pattern(fill_type="solid",fgColor="FFFF00")
b2.fill=yellow_fill
#填充颜色
4.渐进填充
from openpyxl.styles import GradientFill
red_to_green=GradientFill(fill_type="liner",stop=("FF0000","00FF00"))
b3.fill=red_to_green
5.边框设计
openpyxl.styles.Border()
openpyxl.styles.Side()
关于border参数:
left 指定左侧边框线类型合颜色
right top bottom同理
diagonal 指定对角线类型和颜色
diagonalUp 是否绘制左下角到右上角的对角线
diagonalDown 是否绘制左上角到右下角的对角线
diagonal_direction 指定对角线方向
outline 轮廓线
vertical 垂直线
horizontal 水平线
关于side参数:
border_style 线条种类,一般都是"thin",“thick”,"double"等
color 线条颜色
from openpyxl.styles import Border,Side
thin_side = Side(border_style="thin",color="000000")
doule_side = Side(border_style="double",color="FF0000")
b2.border=Border(diagonal=thin_side,diagonalUp=True,diagonalDown=True)
b3.border=Border(left=double_side,top=single_side)
6.文本对齐
openpyxl.styles.Alignment()
参数:
horizonrtal:水平文本
general 常规 centerContinuous 跨列剧中 fill填充
center 剧中 top 顶部对齐 bottom底部对齐 justify两端对齐 distributed 分散对齐
vertical:垂直文本
center 剧中 top 顶部对齐 bottom底部对齐 justify两端对齐 distributed 分散对齐
text_rotation 指定文本旋转角度
wrap_text 是否自动换行
strink_to_fit 是否缩小字体填充
indent 指定缩进
from openpyxl.styles import Alignment
ws.merge_cells('A1:C2')
ws['A1'].value="i love you"
center_alignment=Alignment(horizontal='center',vertical='center')
ws['A1'].alignment=center_alignment
7.命名样式,设置样式模板
(1)实例化一个NamedStyle类
(2)初始化命名样式
(3)注册命名样式到工作簿
(4)将单元格的style属性赋值为命名样式
from openpyxl.styles import NamedStyle
heightlight=NamedStyle(name="heightlight")
heightlight.font=Font(bold=True,Size=20)
heightight.alignment=Alignment(horizontal="center",vertical="center")
wb.add_named_style(heightlight)#注册命名样式到工作簿
ws["A1"].style=heightlight#将单元格的style属性赋值为命名样式