Python xlwt 模块 Excel表格 基础 3:单元格格式、字体格式、对齐方式、边框及填充等
前言:1、数据类型设置2、字体设置3、单元格对齐方式4、单元格边框设置5、填充设置6、单元格保护结尾:【Python与Office】专栏前言:
上一篇博客介绍了xlwt 模块设置 Excel 表格文件的 窗口显示样式、默认打印格式等 方法。
本篇博客主要对表格文件的单元格格式设置进行介绍,主要包括:
1. 单元格数据类型; 2. 字体设置; 3. 对齐方式; 4. 边框设置; 5. 填充设置; 6. 单元格保护。
1、数据类型设置
这里还是用上一节的方式,先建立两个sheet表,写入数据,然后对Tset sheet表设置自定义的单元格格式,T2 sheet表以默认的单元格格式写入。
# 导入模块import xlwtwork_book = xlwt.Workbook()work_sheet = work_book.add_sheet('Test')w2 = work_book.add_sheet('T2')# 创建数据z = [[r,c] for r in range(20) for c in range(20)][l.append(str(i)) for i,l in enumerate(z)]
单元格格式设置方法:
单元格格式设置也有一套固定的流程:
创建单元格样式对象——设置样式(修改样式属性值)——将数据写入单元格时以创建的样式写入
# 建立样式my_style_1 = xlwt.XFStyle()# 建立单元格数据类型,数值类型,默认为:'General'my_style_1.num_format_str = '0'# 写入数据、Test sheet对象以自定义格式写入,T2 sheet对象以默认格式写入for info in z:# 写入数据,并对单元格设置格式work_sheet.write(info[0],info[1],info[2],my_style_1)w2.write(info[0],info[1],info[2])# 保存文件work_book.save('Test3.xls')
可设置的数据格式有:
# 单元格数据类型 #######################################################''''general','0','0.00','#,##0','#,##0.00','"$"#,##0_);("$"#,##0)','"$"#,##0_);[Red]("$"#,##0)','"$"#,##0.00_);("$"#,##0.00)','"$"#,##0.00_);[Red]("$"#,##0.00)','0%','0.00%','0.00E+00','# ?/?','# ??/??','M/D/YY','D-MMM-YY','D-MMM','MMM-YY','h:mm AM/PM','h:mm:ss AM/PM','h:mm','h:mm:ss','M/D/YY h:mm','_(#,##0_);(#,##0)','_(#,##0_);[Red](#,##0)','_(#,##0.00_);(#,##0.00)','_(#,##0.00_);[Red](#,##0.00)','_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)','_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)','_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)','_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)','mm:ss','[h]:mm:ss','mm:ss.0','##0.0E+0','@''''
2、字体设置
先建立一个字体对象:
# 建立字体font = my_style_1.font
然后对字体名称,字体高度、加粗等方面进行设置:
可设置项(默认设置):
# self.height = 0x00C8 # 200: this is font with height 10 points# self.italic = False# self.struck_out = False# self.outline = False# self.shadow = False# self.colour_index = 0x7FFF# self.bold = False# self._weight = 0x0190 # 0x02BC gives bold font# self.escapement = self.ESCAPEMENT_NONE# self.underline = self.UNDERLINE_NONE# self.family = self.FAMILY_NONE# self.charset = self.CHARSET_SYS_DEFAULT# self.name = 'Arial'
实例:
# 设置字体名称font.name = 'Times New Roman '# 设置字体高度font.height = 400# 设置斜体font.italic = True# 设置删除线font.struck_out = True# 设置轮廓font.outline = True# 设置阴影font.shadow = True# 设置字体颜色、蓝色font.colour_index = 0x0C# 设置加粗font.bold = True# 设置字体上下标、上标# font.escapement = 1# 设置下划线、双层下划线font.underline = 2# 设置字符集、GBKfont.charset = 0x86
设置效果图:
获取字体格式信息:
除了可以设置单元格格式外,还可以通过_search_key() 方法来获取单元格样式信息。
font_info = font._search_key()print(font_info)# 打印结果:# (400, True, True, True, True, 12, True, 400, 0, 2, 0, 134, 'Times New Roman ')
字体格式设置说明:
上面的设置将字体颜色用,设置为蓝色:
font.colour_index = 0x0C
字体颜色可选值:
# 颜色索引 #######################################################"""aqua 0x31black 0x08blue 0x0Cblue_gray 0x36bright_green 0x0Bbrown 0x3Ccoral 0x1Dcyan_ega 0x0Fdark_blue 0x12dark_blue_ega 0x12dark_green 0x3Adark_green_ega 0x11dark_purple 0x1Cdark_red 0x10dark_red_ega 0x10dark_teal 0x38dark_yellow 0x13gold 0x33gray_ega 0x17gray25 0x16gray40 0x37gray50 0x17gray80 0x3Fgreen 0x11ice_blue 0x1Findigo 0x3Eivory 0x1Alavender 0x2Elight_blue 0x30light_green 0x2Alight_orange 0x34light_turquoise 0x29light_yellow 0x2Blime 0x32magenta_ega 0x0Eocean_blue 0x1Eolive_ega 0x13olive_green 0x3Borange 0x35pale_blue 0x2Cperiwinkle 0x18pink 0x0Eplum 0x3Dpurple_ega 0x14red 0x0Arose 0x2Dsea_green 0x39silver_ega 0x16sky_blue 0x28tan 0x2Fteal 0x15teal_ega 0x15turquoise 0x0Fviolet 0x14white 0x09yellow 0x0D"""
字体上下标设置、下划线设置、字符集设置:
# 字体上标font.escapement = 1# 设置下划线、双层下划线font.underline = 2# 设置字符集、GBKfont.charset = 0x86
解析:
这里单元格默认的字体上下标设置是:
self.escapement = self.ESCAPEMENT_NONE
查下面的索引:ESCAPEMENT_NONE = 0x00
如我们想将单元格设置为上标,上标是:ESCAPEMENT_SUPERSCRIPT ,对应的值为:0x01(16位数字)
及单元格格式设置为:
font.escapement = 0x01
或:
font.escapement = 1
下面出现的其他设置都是类似原理,如再次出现就不解释了。
上下标、下划线、字符集索引:
ESCAPEMENT_NONE = 0x00# 上标ESCAPEMENT_SUPERSCRIPT = 0x01# 下标ESCAPEMENT_SUBSCRIPT = 0x02# 下划线可选值UNDERLINE_NONE= 0x00UNDERLINE_SINGLE = 0x01UNDERLINE_SINGLE_ACC = 0x21UNDERLINE_DOUBLE = 0x02UNDERLINE_DOUBLE_ACC = 0x22# 字符集可选值CHARSET_ANSI_LATIN= 0x00CHARSET_SYS_DEFAULT = 0x01CHARSET_SYMBOL = 0x02CHARSET_APPLE_ROMAN = 0x4DCHARSET_ANSI_JAP_SHIFT_JIS = 0x80CHARSET_ANSI_KOR_HANGUL= 0x81CHARSET_ANSI_KOR_JOHAB= 0x82CHARSET_ANSI_CHINESE_GBK = 0x86CHARSET_ANSI_CHINESE_BIG5 = 0x88CHARSET_ANSI_GREEK= 0xA1CHARSET_ANSI_TURKISH = 0xA2CHARSET_ANSI_VIETNAMESE= 0xA3CHARSET_ANSI_HEBREW = 0xB1CHARSET_ANSI_ARABIC = 0xB2CHARSET_ANSI_BALTIC = 0xBACHARSET_ANSI_CYRILLIC = 0xCCCHARSET_ANSI_THAI = 0xDECHARSET_ANSI_LATIN_II = 0xEECHARSET_OEM_LATIN_I = 0xFF
3、单元格对齐方式
建立对齐方式对象,设置对齐方式属性:
可设置项(默认设置):
# self.horz = self.HORZ_GENERAL# self.vert = self.VERT_BOTTOM# self.dire = self.DIRECTION_GENERAL# self.orie = self.ORIENTATION_NOT_ROTATED# self.rota = self.ROTATION_0_ANGLE# self.wrap = self.NOT_WRAP_AT_RIGHT# self.shri = self.NOT_SHRINK_TO_FIT# self.inde = 0# self.merg = 0
实例:
# 建立对其方式:alignment = my_style_1.alignment# 水平对齐方式、水平居中alignment.horz = 2# 垂直对齐方式、垂直居中alignment.vert = 1# 旋转方向,设置旋转方向45alignment.rota = 45# 自动缩进设置alignment.shri = 1
设置效果图:
获取对齐方式信息:
# 获取当前对齐方式alignment_info = alignment._search_key()print(alignment_info)# 打印结果:# (2, 1, 0, 0, 45, 0, 1, 0, 0)
其他对齐方式索引:
# 水平对齐方式HORZ_GENERAL= 0x00HORZ_LEFT = 0x01HORZ_CENTER = 0x02HORZ_RIGHT = 0x03HORZ_FILLED = 0x04HORZ_JUSTIFIED = 0x05 # BIFF4-BIFF8XHORZ_CENTER_ACROSS_SEL= 0x06 # Centred across selection (BIFF4-BIFF8X)HORZ_DISTRIBUTED = 0x07 # Distributed (BIFF8X)# 垂直对齐方式VERT_TOP= 0x00VERT_CENTER = 0x01VERT_BOTTOM = 0x02VERT_JUSTIFIED = 0x03 # Justified (BIFF5-BIFF8X)VERT_DISTRIBUTED = 0x04 # Distributed (BIFF8X)# 旋转角度ROTATION_0_ANGLE = 0x00ROTATION_STACKED = 0xFF# 自动缩进设置SHRINK_TO_FIT= 0x01NOT_SHRINK_TO_FIT = 0x00
4、单元格边框设置
建立单元格边框对象,设置属性值:
可设置项(默认值):
# self.left = self.NO_LINE# self.right = self.NO_LINE# self.top = self.NO_LINE# self.bottom = self.NO_LINE# self.diag = self.NO_LINE# self.left_colour = 0x40# self.right_colour = 0x40# self.top_colour = 0x40# self.bottom_colour = 0x40# self.diag_colour = 0x40# self.need_diag1 = self.NO_NEED_DIAG1# self.need_diag2 = self.NO_NEED_DIAG2
实例:
borders = my_style_1.borders# 左边框 细线borders.left = 1# 右边框 中细线borders.right = 2# 上边框 虚线borders.top = 3# 下边框 点线borders.bottom = 4# 内边框 粗线borders.diag = 5# 左边框颜色 蓝色borders.left_colour = 0x0C# 右边框颜色 金色borders.right_colour = 0x33# 上边框颜色 绿色borders.top_colour = 0x11# 下边框颜色 红色borders.bottom_colour = 0x0A# 内边框 黄色borders.diag_colour = 0x0D
设置效果:
获取边框设置信息:
borders_info = borders._search_key()print(borders_info)# 打印结果# (1, 2, 3, 4, 5, 12, 51, 17, 10, 13, 0, 0)
边框线型索引:
NO_LINE = 0x00THIN = 0x01MEDIUM = 0x02DASHED = 0x03DOTTED = 0x04THICK = 0x05DOUBLE = 0x06HAIR = 0x07#The following for BIFF8MEDIUM_DASHED= 0x08THIN_DASH_DOTTED = 0x09MEDIUM_DASH_DOTTED= 0x0ATHIN_DASH_DOT_DOTTED = 0x0BMEDIUM_DASH_DOT_DOTTED= 0x0CSLANTED_MEDIUM_DASH_DOTTED = 0x0D
注:边框颜色设置可参看字体颜色设置索引。
5、填充设置
建立填充对象,设置属性:
可设置项(默认值):
# self.pattern = self.NO_PATTERN# self.pattern_fore_colour = 0x40# self.pattern_back_colour = 0x41
实例:
# 填充设置pat = my_style_1.pattern# 打开填充pat.pattern = 1# 填充前景色、紫色pat.pattern_fore_colour = 0x14# 填充背景色、紫色pat.pattern_back_colour = 0x14
效果图:
注:xlwt 模块好像只提供了颜色填充设置方法,图案填充方法未提供。颜色索引见字体颜色索引。
6、单元格保护
建立保护对象,设置属性:
可设置项(默认设置):
# self.cell_locked = 1# self.formula_hidden = 0
实例:
# 设置单元格锁定protection.cell_locked = 1# 设定隐藏单元格内公式protection.formula_hidden = 1# 只有在sheet表设置为保护时才有效work_sheet.set_protect(1)
注:只有在sheet表设置为保护时才有效,(效果可参考第二节表格保护内容)。
结尾:
以上就是本篇全部内容,感谢阅读。
下一篇博客内容为:根据 xlwt 模块的一些方法,用面向对象的思想,自写一个类实现:按行按列写入、自定义格式方法、自动调整列宽等 等功能。
【Python与Office】专栏
该专栏会对 Python 的第三方模块,如:xlwt,xlrd,python-docx等,操作 Office 办公软件(Word Excel PPT)的方法进行详细讲解。同时也会搭配一些实例演练,一方面强化知识点的理解与运用,另一方面也希望能起到,引导读者进行思考:如何用 python 提高 offic 办公软件办公效率的作用。
感兴趣的朋友,可以点个关注或收藏。如在博客中遇到任何问题或想法,可留言或私信。
创作不易,你的支持是我最大的动力,感谢 !
如果觉得《Python xlwt 操作 excel 表格基础(三):单元格格式 字体格式 对齐方式 边框及填充等》对你有帮助,请点赞、收藏,并留下你的观点哦!