Pythonpython 知识点汇总

Python:利用xlwt设置Excel单元格格式

2020-01-06  本文已影响0人  洋阳酱

xlwt介绍和安装

xlwt是Python中操作Excel的一个库,可以将数据保存成Excel
API Reference:https://xlwt.readthedocs.io/en/latest/api.html#xlwt.Style.easyxf
PyPI:https://pypi.org/project/xlwt-fix/

pip install xlwt

在保存之前,可以设置单元格的属性,官网提供了以下6种设置。

Group Attributes
Number format Number format index (index to FORMAT record)
Font Font index (index to FONT record)
Alignment Horizontal and vertical alignment, text wrap, indentation, orientation/rotation, text direction
Border Border line styles and colours
Background Background area style and colours
Protection Cell locked, formula hidden

此文介绍其中4种:

文中所有代码链接:https://github.com/yangyang0126/PythonLearning/tree/master/Python实践/数据可视化/xlwt

创建表格

创建一个表格的流程

我们首先创建一个最简单的表格,不做任何格式,内容就是从0-71的数字。

import xlwt

# 定义workbook
workbook = xlwt.Workbook() 

# 添加sheet,这个sheet的名字叫'Style'
sheet = workbook.add_sheet('Style')  

# 写入数据
row = 0 # 行
column = 0 # 列
for i in range(72):    
    sheet.write(row, column, i) # 写入数据,第row行,第column列,具体内容是i
    column += 1
    if column > 8:
        column = 0
        row += 1
        
# 定义保存Excel的位置和文件名。默认是和代码存在一个路劲下面。
workbook.save('CreatExcelTable.xls')

此时运行代码,生成的文件如下所示

能生成一个表格之后,我们开始来设置格式,包括设置字体、居中、边框和背景。

设置格式

1、设置单元格背景

先说设置单元格背景,因为背景设置主要是颜色的设置。这个颜色的识别,是通用的。
我们在设置字体、单元格填充时,会进行颜色的设置。比如将字体设置成红色,将单元格设置成黄色。在xlwt设置中,每一个颜色,都由相对应的数字表示。具体参照下图,给大家分别展示了,当字体是白色或者黑色时,单元格颜色的显示效果。

颜色对应的序号,字体为白色 颜色对应的序号,字体为黑色

设置表格格式,我们首先要先定义一个样式

# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()  

接着进行背景设置

pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 4  # 给背景颜色赋值    

设置好之后,把这个背景,应用到刚刚的 style 上面去

style.pattern = pattern  # 把背景颜色加到表格样式里去

最后,在赋值的时候,把格式带上

sheet.write(row, column, i)  # 不带格式
sheet.write(row, column, i, style)  # 有格式

2、设置字体格式

与上述一致,我们先要先定义一个样式

# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()  

接着进行字体设置

# 为样式创建字体
font = xlwt.Font()  
font.name = 'Calibri' # 设置字体
font.colour_index = 4 # 设置字体颜色
font.height = 400 # 字体大小

设置好之后,把这个字体,应用到刚刚的 style 上面去

style.font = font

最后,在赋值的时候,把格式带上

sheet.write(row, column, i)  # 不带格式
sheet.write(row, column, i, style)  # 有格式

完整代码

import xlwt
workbook = xlwt.Workbook() 
sheet = workbook.add_sheet('Font')  

# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()  

# 为样式创建字体
font = xlwt.Font()  
font.name = 'Calibri' # 设置字体
font.colour_index = 4 # 设置字体颜色
font.height = 400 # 字体大小

# 定义格式-字体
style.font = font

# 写入数据
row = 0 # 行
column = 0 # 列
for i in range(72):    
    sheet.write(row, column, i, style) # 增加样式
    if column > 8:
        column = 0
        row += 1
        
workbook.save('Font.xls')

此时效果如下图所示,字体是Calibri,颜色是蓝色,字体大小是400

我们对字体进行进一步设置,设置粗体、斜体、下划线等

    font.name = 'Times New Roman' # 设置字体    
    font.color_index = color # 设置字体颜色
    font.height = 400 # 字体大小    
    font.bold = True # 字体是否为粗体    
    font.italic = True # 字体是否为斜体    
    font.underline = True # 字体是否有下划线    
    font.struck_out =True # 字体中是否有横线

我们来看一下粗体、斜体和下划线的效果。下划线的颜色和粗细,是随着字体走的。字体粗体,下划线也是粗体。

下面是横线效果

3、位置设置

目前我只会设置水平位置
有些文章说,通过al.vert可以设置垂直位置,我尝试了没效果
后续如果学会了,再来更新

    alignment  = xlwt.Alignment()
    alignment .horz = 1      # 设置水平位置,0是左对齐,1是居中,2是右对齐
    # 设置自动换行
    alignment.wrap = 1
    style.alignment = alignment

4、边框设置

    # 设置边框
    borders = xlwt.Borders() # Create Borders
    # DASHED虚线
    # NO_LINE没有
    # THIN实线
    borders.left = xlwt.Borders.DASHED 
    borders.right = xlwt.Borders.DASHED 
    borders.top = xlwt.Borders.DASHED 
    borders.bottom = xlwt.Borders.DASHED 

    borders.left_colour = color
    borders.right_colour = color
    borders.top_colour = color
    borders.bottom_colour = color

    style.borders = borders 

边框颜色随意,这个不多说了。讲一下边框的线条。
有两种定义方式,一种是用DASHED、THIN来表示

    # DASHED虚线
    # NO_LINE没有
    # THIN实线
    borders.left = xlwt.Borders.DASHED 
    borders.right = xlwt.Borders.DASHED 
    borders.top = xlwt.Borders.DASHED 
    borders.bottom = xlwt.Borders.DASHED 

效果如下

实线边框 虚线边框

还有一种,可以直接用数字表示

    # 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
    # 大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13
    borders.left = 1
    borders.right = 2
    borders.top = 3
    borders.bottom = 4

这边展示了,不同数字对应的边框样式

根据数字定义边框

最后

目前关于xlwt的学习,就差不多这样。后续学了更多东西,再来补充~~

参考网址

上一篇下一篇

猜你喜欢

热点阅读