from openpyxl.styles import Font
from openpyxl import load_workbook
wb = load_workbook('/data/demo/example.xlsx')
ws = wb['工作表2']
font = Font('宋体',size = 11,bold=True,
italic=True,strike=True, color='000000')
ws['A1'].font = font
from openpyxl.styles import PatternFill
fill = PatternFill(fill_type = None,start_color='FFFFFF',
end_color='000000')
ws['B1'].fill = fill
注意,官方文档中写明, fill_type
若没有特别指定类型,则后续的参数都无效。
所以上述代码就会出问题, start_color
代表前景色, end_color
是背景色,
之所以设置两个参数是为了方便样式颜色的填充和渐变色的显示。
这里官方文档给出了很多种填充类型(类似于操作excel表格):
‘none’、‘solid’、‘darkDown’、‘darkGray’、‘darkGrid’、‘darkHorizontal’、‘darkTrellis’、‘darkUp’、‘darkVertical’、
‘gray0625’、‘gray125’、‘lightDown’、‘lightGray’、‘lightGrid’、‘lightHorizontal’、‘lightTrellis’、‘lightUp’、‘lightVertical’、‘mediumGray’
具体每个参数是什么意思不解释了,如果想要纯色填充的话可以用 solid
,
然后设置前景色为所需要的颜色即可。
Border
:
from openpyxl.styles import Border,Side
border = Border(left=Side(border_style='thin',color='000000'),
right=Side(border_style='thin',color='000000'),
top=Side(border_style='thin',color='000000'),
bottom=Side(border_style='thin',color='000000'))
ws['C1'].border = border
注意这里需要导入Border
和Side
两个函数。
边框的样式有很多,官方给出的样式如下: ‘dashDot’,‘dashDotDot’,‘dashed’,‘dotted’,‘double’,‘hair’,‘medium’,‘mediumDashDot’,‘mediumDashDotDot’,‘mediumDashed’,‘slantDashDot’,‘thick’,‘thin’
注意,如果没有定义边框的样式,那么后面的参数将没有作用。
另外,边框不只left
,right
,top
,bottom
,官方还给出了几个参数,
这里不详细讲了,目测对角线什么的也不一定能用到。
‘diagonal’,‘diagonal_direction’,‘vertical’,‘horizontal’
from openpyxl.styles import Alignment
align = Alignment(horizontal='left',vertical='center',wrap_text=True)
ws['D1'].alignment = align
ws.row_dimensions[2].height = 40
C列列宽
ws.column_dimensions['C'].width = 30
ws.merge_cells('B1:G1')
合并一个矩形区域中的单元格。
ws.merge_cells('A1:C3')
合并后只可以往左上角写入数据,也就是区间中:左边的坐标。
如果这些要合并的单元格都有数据,只会保留左上角的数据,其他则丢弃。 换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。
以下是拆分单元格的代码。拆分后,值回到A1
位置。
ws.unmerge_cells('A1:C3')