2020年7月10日 / 6,033次阅读 / Last Modified 2020年7月16日
excel表格
openpyxl的单元格样式由6种属性决定,每一种都是一个类。如下所示(大概意思):
>>> from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
>>> font = Font(name='Calibri',
... size=11,
... bold=False,
... italic=False,
... vertAlign=None,
... underline='none',
... strike=False,
... color='FF000000')
>>> fill = PatternFill(fill_type=None,
... start_color='FFFFFFFF',
... end_color='FF000000')
>>> border = Border(left=Side(border_style=None,
... color='FF000000'),
... right=Side(border_style=None,
... color='FF000000'),
... top=Side(border_style=None,
... color='FF000000'),
... bottom=Side(border_style=None,
... color='FF000000'),
... diagonal=Side(border_style=None,
... color='FF000000'),
... diagonal_direction=0,
... outline=Side(border_style=None,
... color='FF000000'),
... vertical=Side(border_style=None,
... color='FF000000'),
... horizontal=Side(border_style=None,
... color='FF000000')
... )
>>> alignment=Alignment(horizontal='general',
... vertical='bottom',
... text_rotation=0,
... wrap_text=False,
... shrink_to_fit=False,
... indent=0)
>>> number_format = 'General'
>>> protection = Protection(locked=True,
... hidden=False)
大概能用的属性如上,具体不同的版本有写差异,可直接到openpyxl官网(https://openpyxl.readthedocs.io/en/stable/index.html)去查看Module Code。
对一个cell进行格式设置:
ws["B5"].font = ft
ws["B5"].fill =fill
ws["B5"].border = bd
ws["B5"].alignment = alignment
ws["B5"].number_format = number_format
ws["B5"].value ="pynote.net"
多某行或某列进行格式设置:
>>> ws.column_dimensions['A']
<openpyxl.worksheet.dimensions.ColumnDimension object at 0x000000000A6465E8>
>>> ws.row_dimensions[1]
>>> a = ws.row_dimensions[1]
>>> a.font
<openpyxl.styles.fonts.Font object>
Parameters:
name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, outline
=None, shadow=None, condense=None, color=<openpyxl.styles.colors.Color object>
Parameters:
rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme', extend=None,
sz=11.0, u=None, vertAlign=None, scheme='minor'
>>> b = ws.column_dimensions['A']
>>> b.font
<openpyxl.styles.fonts.Font object>
Parameters:
name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, outline
=None, shadow=None, condense=None, color=<openpyxl.styles.colors.Color object>
Parameters:
rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme', extend=None,
sz=11.0, u=None, vertAlign=None, scheme='minor'
直接对属性进行赋值即可。
可控制属性是在太多了,本人对excel不熟悉,我想如果熟悉excel软件可能会对这些属性感觉更亲切吧。
有一个常见的问题,如何让自动生产的excel表格的宽度能够自适应,我也没有找到直接设置属性的方法。网上有一种方案,遍历列,找到最长的字符串,然后据此设置列的宽。
-- EOF --
本文链接:https://www.pynote.net/archives/2229
《用openpyxl.styles设置格式》有2条留言
©Copyright 麦新杰 Since 2019 Python笔记
font貌似也只能对cell才有效。 [ ]
我发现设置居中,只能对cell进行才有效果。 [ ]