python3使用xlwt时写入文档字体颜色和边框样式

时间:2024-02-29 14:45:16

转自:https://www.cnblogs.com/xiaodingdong/p/8012282.html

可借鉴的网址:https://www.programcreek.com/python/example/39979/xlwt.Alignment

可以直接通过pip安装xlwt

个人理解:

xlwt中对excel操作哦时主要用了font、alignment、pattern、protection这四个。

 

其中:

font:主要对字体进行操作,比如字体的颜色、大小
alignment:主要是对输入内容之后的对齐方式对齐
borders:每一个单元格的格式
pattern:设置单元格的背景颜色
protection:没用过不太懂意思

一.font对字体写入的颜色设置:

复制代码
ef setStyle(name, height,color, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    # 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
    font.name = name
    # 设置字体颜色
    font.colour_index = color
    # 字体大小
    font.height = height
    # 定义格式
    style.font = font

    return style

if __name__ == \'__main__\':
    # 创建工作簿,并指定写入的格式
    f = xlwt.Workbook(encoding=\'utf8\')  # 创建工作簿

    #  创建sheet,并指定可以重复写入数据的情况.设置行高度
    sheet1 = f.add_sheet(u\'colour\', cell_overwrite_ok=False)

    # 控制行的位置
    column = 0;
    row = 0
    # 生成第一行
    for i in range(0, 100):
        # 参数对应:行,列,值,字体样式(可以没有)
        sheet1.write(column, row, i, setStyle(\'Times New Roman\', 400, i, False))

        # 这里主要为了控制输入每行十个内容。为了查看
        row = row + 1
        if row % 10 ==0:
            column = column + 1
            row = 0
    f.save(r\'E:\xlwtExCEL.xls\')  # 保存文档
复制代码

 

步骤:

1.创建工作薄对象。

2.设置excel里面工作表的名字

3.通过font定义字体的类型、大小和颜色

4.然后通过sheet1的write方法指定行列并写入内容

效果图:

 

 其中1和9看不清,可能写入的颜色为白色,并不是没有写入。(把那两个单元格的颜色改成黑色就能正常看见了);修改之后的样子

font中其他一些元素的属性:

font.bold = bold # 粗体
font.italic = True # 斜体
font.underline = 10 # 下划线(其中当值为9,整行的填充色为蓝色)
font.struck_out =True # 横线(比如:在一个字中 画上一横)

复制代码
def set_style(name, height,color, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    # 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
    font.name = name
    # 是否为粗体
    font.bold = bold
    # 设置字体颜色
    font.colour_index = color
    # 字体大小
    font.height = height
    # 字体是否斜体
    font.italic = True
    # 字体下划,当值为11时。填充颜色就是蓝色
    font.underline = 0
    # 字体中是否有横线struck_out
    font.struck_out =True
    # 定义格式
    style.font = font

    return style

if __name__ == \'__main__\':
    # 创建工作簿,并指定写入的格式
    f = xlwt.Workbook(encoding=\'utf8\')  # 创建工作簿

    #  创建sheet,并指定可以重复写入数据的情况.设置行高度
    sheet1 = f.add_sheet(u\'colour\', cell_overwrite_ok=False)

    # 控制行的位置
    column = 0;
    row = 0
    # 生成第一行
    for i in range(0, 100):
        # 参数对应:行,列,值,字体样式(可以没有)
        sheet1.write(column, row, i, set_style(\'汉仪瘦金书繁\', 400, i, False))

        # 这里主要为了控制输入每行十个内容。为了查看
        row = row + 1
        if row % 10 ==0:
            column = column + 1
            row = 0
    f.save(r\'E:\xlwtExCEL.xls\')  # 保存文档
复制代码

 

 

字体下划underline属性值不为9的效果图:(并有加粗的效果)

 

 

字体下划underline属性值为9的效果图:

 

 

 注 : 看出underline等于某个值时是没有下划线,而等于98时出现双下划线的效果



 

 

二.borders中设置元素边框的属性:

复制代码
def setStyle(name, height,color, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    # 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
    font.name = name
    # 设置字体颜色
    font.colour_index = color
    # 字体大小
    font.height = height
    # 定义格式
    style.font = font

    # borders.left = xlwt.Borders.THIN
    # NO_LINE: 官方代码中NO_LINE所表示的值为0,没有边框
    # THIN: 官方代码中THIN所表示的值为1,边框为实线
    borders = xlwt.Borders()
    borders.left = color
    borders.left = xlwt.Borders.THIN
    borders.right = color
    borders.top = color
    borders.bottom = color

    # 定义格式
    style.borders = borders

    return style

if __name__ == \'__main__\':
    # 创建工作簿,并指定写入的格式
    f = xlwt.Workbook(encoding=\'utf8\')  # 创建工作簿

    #  创建sheet,并指定可以重复写入数据的情况.设置行高度
    sheet1 = f.add_sheet(u\'colour\', cell_overwrite_ok=False)

    # 控制行的位置
    column = 0
    row = 0
    # 生成第一行
    for i in range(0, 100):
        # 参数对应:行,列,值,字体样式(可以没有)
        sheet1.write(column, row, i, setStyle(\'汉仪瘦金书繁\', 400, i, True))

        # 这里主要为了控制输入每行十个内容。为了查看
        row = row + 1
        if row % 10 == 0:
            column = column + 1
            row = 0
    f.save(r\'E:\xlwtExCEL.xls\')  # 保存文档
复制代码

 

效果图:

设置自己喜欢的格式,上面的图应该够用了。

 

三、pattern设置单元格的颜色背景颜色:

 

复制代码
def setStyle(name, height,color, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    # 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
    font.name = name
    # 设置字体颜色
    font.colour_index = color
    # 字体大小
    font.height = height
    # 定义格式
    style.font = font

    # borders.left = xlwt.Borders.THIN
    # NO_LINE: 官方代码中NO_LINE所表示的值为0,没有边框
    # THIN: 官方代码中THIN所表示的值为1,边框为实线
    borders = xlwt.Borders()
    borders.left = color
    borders.left = xlwt.Borders.THIN
    borders.right = color
    borders.top = color
    borders.bottom = color

    # 定义格式
    style.borders = borders

    # 设置背景颜色
    pattern = xlwt.Pattern()
    # 设置背景颜色的模式
    pattern.pattern = xlwt.Pattern.SOLID_PATTERN

    # 背景颜色
    pattern.pattern_fore_colour = color

    style.pattern = pattern

    return style

if __name__ == \'__main__\':
    # 创建工作簿,并指定写入的格式
    f = xlwt.Workbook(encoding=\'utf8\')  # 创建工作簿

    #  创建sheet,并指定可以重复写入数据的情况.设置行高度
    sheet1 = f.add_sheet(u\'colour\', cell_overwrite_ok=False)

    # 控制行的位置
    column = 0
    row = 0
    # 生成第一行
    for i in range(0, 100):
        # 参数对应:行,列,值,字体样式(可以没有)
        sheet1.write(column, row, i, setStyle(\'汉仪瘦金书繁\', 400, i, True))

        # 这里主要为了控制输入每行十个内容。为了查看
        row = row + 1
        if row % 10 == 0:
            column = column + 1
            row = 0
    f.save(r\'E:\xlwtExCEL.xls\')  # 保存文档
复制代码

 

效果图:

四、alignment对齐方式的设置:

复制代码
def setStyle(name, height,color, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    # 字体类型:比如宋体、仿宋也可以是汉仪瘦金书繁
    font.name = name
    # 设置字体颜色
    font.colour_index = color
    # 字体大小
    font.height = height
    # 定义格式
    style.font = font

    alignment = xlwt.Alignment()
    alignment.horz = color

    style.alignment = alignment

    return style

if __name__ == \'__main__\':
    # 创建工作簿,并指定写入的格式
    f = xlwt.Workbook(encoding=\'utf8\')  # 创建工作簿

    #  创建sheet,并指定可以重复写入数据的情况.设置行高度
    sheet1 = f.add_sheet(u\'colour\', cell_overwrite_ok=False)

    # 控制行的位置
    column = 0
    row = 0
    # 生成第一行
    for i in range(0, 100):
        # 参数对应:行,列,值,字体样式(可以没有)
        sheet1.write(column, row, i, setStyle(\'汉仪瘦金书繁\', 400, i, True))

        # 这里主要为了控制输入每行十个内容。为了查看
        row = row + 1
        if row % 10 == 0:
            column = column + 1
            row = 0
    f.save(r\'E:\xlwtExCEL.xls\')  # 保存文档
复制代码

 

效果图:

 

 

注意:有些等于某个值时会有不同的效果

alignment还有其他的属性其他属性:

 

五、protection的使用不是很明白,网上的解释是:设置保护模式