在文章《Openpyxl----让Excel飞(一)》中,初步了解了Openpyxl的工作表操作和单元格操作。此次,将补充一些单元格操作的常用函数,另外再讲解openpyxl行列操作及表格格式设置上常用的函数。
单元格操作
合并单元格(一)
ws.merge_cells('B1:G1') #合并B1到G1的单元格
合并单元格(二)
ws.merge_cells(start_row=2, start_column=1, end_row=6, end_column=1)#合并A2到A6的单元格
取消合并单元格(一)
ws.unmerge_cells('B1:G1') #取消合并单元格
取消合并单元格(二)
ws.unmerge_cells(start_row=2, start_column=1, end_row=6, end_column=1) #取消合并单元格
单元格数据格式设置
ws['B1'].number_format = '0.00' # 定义数据格式为数字,0.00表示显示小数点后两位数,如果需要三位数则0.000ws['C1'].number_format = '0%' # 定义数据格式为百分比,如需要小数点后几位,则参照上一条语句ws['D1'].number_format = 'yyyy/mm/dd' #定义数据格式为日期,也可以定义为yy-mm-dd或dd-mm-yy等,只要yymmdd在就可以随意安排ws['E1'].number_format = '0.00E+00' #定义数据格式为科学计数模式ws['F1'].number_format = '¥#,##0.00' #定义数据格式为货币,#,##0表示千位逗号隔开ws['H1'].number_format = '@' #定义数据格式为文本
PS:如果上述格式没有你想要的格式,可以先自己在Excel中设置相应的单元格数据格式,然后通过print(ws['Cell'].number_format)打印单元格数据格式。就可以知道自己想要的数据格式在openpyxl是怎样定义的。
行列操作
设置列宽
ws.column_dimensions['A'].width = 15 #设置列宽为15
设置行高
ws.row_dimensions[1].height = 15 #设置行高为15
隐藏行列
ws.column_dimensions['A'].hidden = 1 #隐藏 A列ws.row_dimensions[2].hidden = 1 #隐藏第2行
获取最大行数
max_row = ws.max_row #.max_row可以获取工作表有数据部分的最大行数
获取最大列数
max_col = ws.max_column #.max_col可以获取工作表有数据部分的最大列数
插入行
ws.insert_rows(2) #在第二行前插入一行ws.insert_rows(5,2) #在第五行前插入两行
插入列
ws.insert_cols(2) #在第二列前插入一列ws.insert_cols(5,2) #在第五列前插入两列
格式设置
在开始格式设置之前,需要导入相应的模块
from openpyxl.styles import *
字体设置
ft = Font(name = "Arial", #选择字体 sz = 12, #设置字体大小,也可以用size = 来设置 b = True, #设置加粗,用布尔变量True表示加粗,不定义或者False表示正常,也可以用bold = 来设置 i = True, #设置斜体,用布尔变量True表示斜体,不定义或者False表示正常,也可以用italic= 来设置 u = 'single', #增加下划线,'single'表示单下划线,’double'表示双下划线,也可以用underline= 来设置 strike= True, #设置删除线,用布尔变量True表示增加删除线,不定义或者False表示正常。 color = '0000FF') #设置颜色,‘0000FF'表示RGB三原色ws['A1'].font = ft #设置单元格A1字体为ft
对齐方式设置
Align = Alignment(horizontal='center', vertical='center')ws['A1'].Alignment = Align #设置单元格A1竖直与水平方向居中 # Horizontal 水平对齐常用方式有以下: # 'left' 左对齐 # 'right' 右对齐 # 'center' 居中 # 'fill' 填充,效果如下 # 'justify' 自动换行 # 'centerContinuous' 居中连续,效果如下 # Vertical 竖直对齐常用方式有以下: # ‘top' 顶部对齐 # 'center' 居中对齐 # 'justify' 自动换行 # 'bottom' 底部对齐
对齐方式选fill
对齐方式选centerContinuous
单元格填充设置
fill = PatternFill("solid",fgColor = '0000FF')# 除了solid,还有下图填充样式可供选择
填充样式
边框样式设置
side = Side(style='medium', color='000000') #定义边框的边线,border = Border(top= side, #定义整个单元格的上下左右边框边线,可定义为不用边线 bottom= side , left=side, right=side)ws.cell(11,11).border = border # 定义单元格K11边框# 边框边线style 有多种可定义,详见下图
边线样式
样式打包定义
style1 = NamedStyle(name='style1', font=font1, fill=fill1, border=border, alignment=Align1)style2 = NamedStyle(name='style2', font=font2, fill= fill2, border=border, alignment=Align2)ws.cell(14,14).style = style1ws.cell(15,15).style = style2# 假设已经定义好 font1,fill1,font2,fill2,border,Align1,Align2