搜索

查看: 3112|回复: 11

[Python] python中xlwt模块的具体用法

[复制链接]
发表于 2023-5-4 17:17:55 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:17:55 3112 11 看全部
目录
  • 一、前言
  • 二、基础操作
  • 三、样式优化
  • 1、设置行列宽度
  • 2、设置文本居中
  • 3、设置边框
  • 4、设置字体样式
  • 5、综合代码
    一、前言
    xlwt模块是python中专门用于写入Excel的拓展模块,可以实现创建表单、写入指定单元格、指定单元格样式等人工实现的功能,一句话就是人使用excel实现的功能,这个扩展包都可以实现。

    二、基础操作
    1、创建workbook(创建excel)
    #创建一个工作簿对象,设置编码格式为“utf-8”,默认格式是ASCII,为了方便写入中文,一般都要设置成UTF-8
    workBook = xlwt.Workbook(encoding='utf-8')
    2、创建sheet表
    # 通过工作薄对象创建sheet,sheetName 要求长度小于31个字符,并且不能存在斜杠,否则会报错
    sheet = workBook.add_sheet("sheetName")
    3、写入数据
    #首先需要在第0行写入表头,然后再写入后续数据,但是都是使用的write方法写入,只是坐标不一样
    head = ['姓名','年龄','性别']
    data = [['张三','19','男'],['刘雯雯','18','女']]
    #循环写入表头
    for i in head:
            sheet.write(0,head.index(i),i)
    #循环写入数据
    for i in range(len(data)):
        for j in range(len(data)):
            sheet.write(i+1,j,data[j])
    4、保存workbook
    # 通过workBook对象的save方法保存文档,savePath可以是绝对路径,也可以是相对了路径
    savePath = 'C:\\Users\\Administrator\\Desktop\\test.xls'
    workBook.save(savePath)
    上面的示例代码综合后如下:
    import xlwt
    workBook = xlwt.Workbook(encoding='utf-8')
    sheet = workBook.add_sheet("sheetName")
    head = ['姓名','年龄','性别']
    data = [['张三','19','男'],['刘雯雯','18','女']]
    for i in head:
            sheet.write(0,head.index(i),i)
    for i in range(len(data)):
        for j in range(len(data)):
            sheet.write(i+1,j,data[j])
    savePath = 'C:\\Users\\Administrator\\Desktop\\test.xls'
    workBook.save(savePath)
    运行效果如下:

    2023022316283332.png

    2023022316283332.png


    三、样式优化
    1、设置行列宽度
    1)设置列的宽度
    在表格之中行是按照数字来计算,列是按照英文字母顺序来计算的。但是在xlwt库中则是将它们都改成从0开始,类似于索引的对象获取方式。调用sheet.col(0)就可以获取到表格列对象,它表示的就是列A。然后设置width属性值即可修改列宽,xlwt中默认字体0的1/256为衡量单位。xlwt创建时使用的默认宽度为2960,既11个字符0的宽度。
    所以我们在设置列宽时可以用如下方法:width = 256 * 20 256为衡量单位,20表示20个字符宽度。
    示例代码
    for i in range (len(head)):
            sheet.col(i).width = 256*20
    2)设置行的高度
    行高的修改方式和列宽实际上是差不多的,使用row()方法并且传入索引即可获取到行对象。然后调用set_style()方法去设置行样式。
    示例代码:
    for i in range(len(data)):
            sheet.row(i+1).set_style(xlwt.easyxf('font:height 512;')) #第0行为表头,不修改
    综合操作结果:

    2023022316283333.png

    2023022316283333.png


    2、设置文本居中
    在xlwt中,需要使用Alignment来设置单元格的对齐方式,其中horz代表水平对齐方式,vert代表垂直对齐方式。
  • VERT_TOP = 0x00 上端对齐
  • VERT_CENTER = 0x01 居中对齐(垂直方向上)
  • VERT_BOTTOM = 0x02 低端对齐
  • HORZ_LEFT = 0x01 左端对齐
  • HORZ_CENTER = 0x02 居中对齐(水平方向上)
  • HORZ_RIGHT = 0x03 右端对齐
    示例:
    style = xlwt.XFStyle()  # 创建一个样式对象,初始化样式
    al = xlwt.Alignment()
    al.horz = 0x02              # 设置水平居中
    al.vert = 0x01              # 设置垂直居中
    style.alignment = al
    for i in range(len(data)):
        for j in range(len(data)):
                    sheet.write(i+1, j, data[j], style)
    测试效果:

    2023022316283334.png

    2023022316283334.png


    3、设置边框
    xlwt要设置边框,需要使用Borders来设置,可以设置实线、虚线、没有边框三种,并且可以通过colour属性设置颜色。
  • DASHED:虚线
  • THIN:实线
  • NO_LINE:没有边框
    示例:
    style = xlwt.XFStyle()  # 创建一个样式对象,初始化样式
    borders = xlwt.Borders()
    #设置边框属性实线、黑色
    borders.left = xlwt.Borders.THIN
    borders.top = xlwt.Borders.THIN
    borders.right = xlwt.Borders.THIN
    borders.bottom = xlwt.Borders.THIN
    borders.left_colour = 0xff
    borders.right_colour = 0xff
    borders.bottom_colour = 0xff
    borders.top_colour = 0xff
    style.borders = borders
    for i in range(len(data)):
        for j in range(len(data)):
                    sheet.write(i+1, j, data[j], style)
    测试效果:

    2023022316283335.png

    2023022316283335.png


    4、设置字体样式
    设置字体样式,需要使用Font()来创建字体样式。
    示例:
    style = xlwt.XFStyle()                         # 初始化样式
    font = xlwt.Font()                                 # 为样式创建字体
    font.name = 'Times New Roman'
    font.bold = True                                 # 黑体
    font.underline = True                         # 下划线
    font.italic = True                                 # 斜体字
    style.font = font                                 # 设定样式
    测试效果:

    2023022316283436.png

    2023022316283436.png


    5、综合代码
    import xlwt
    workBook = xlwt.Workbook(encoding='utf-8')
    sheet = workBook.add_sheet("sheetName")
    head = ['姓名', '年龄', '性别']
    data = [['张三', '19', '男'], ['刘雯雯', '18', '女']]
    for i in head:
            sheet.write(0, head.index(i), i)
    for i in range(len(head)):
            sheet.col(i).width = 256*20
    style = xlwt.XFStyle()  # 创建一个样式对象,初始化样式
    al = xlwt.Alignment()
    borders = xlwt.Borders()
    font = xlwt.Font()        
    #设置居中
    al.horz = 0x02              # 设置水平居中
    al.vert = 0x01              # 设置垂直居中
    #设置边框
    borders.left = xlwt.Borders.THIN
    borders.top = xlwt.Borders.THIN
    borders.right = xlwt.Borders.THIN
    borders.bottom = xlwt.Borders.THIN
    borders.left_colour = 0xff
    borders.right_colour = 0xff
    borders.bottom_colour = 0xff
    borders.top_colour = 0xff
    # 设置字体样式
    font.name = 'Times New Roman'
    font.bold = True                                 # 黑体
    font.underline = True                         # 下划线
    font.italic = True                                 # 斜体字
    # 设定样式
    style.font = font                                
    style.alignment = al
    style.borders = borders
    # 写入数据和样式
    for i in range(len(data)):
        sheet.row(i+1).set_style(xlwt.easyxf('font:height 512;'))
        for j in range(len(data)):
            sheet.write(i+1, j, data[j], style)
    # 保存工作薄
    savePath = 'C:\\Users\\Administrator\\Desktop\\test.xls'
    workBook.save(savePath)
    到此这篇关于python中xlwt模块的具体用法的文章就介绍到这了,更多相关python xlwt模块内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-28 18:30:38 | 显示全部楼层
    无人岛屿颈 2023-6-28 18:30:38 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-29 13:40:53 | 显示全部楼层
    落败的青春阳落s 2023-6-29 13:40:53 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-29 17:28:29 | 显示全部楼层
    塞翁364 2023-6-29 17:28:29 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 18:30:28 | 显示全部楼层
    123456809 2023-6-29 18:30:28 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-6-30 11:58:09 | 显示全部楼层
    风来时狂放 2023-6-30 11:58:09 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 15:11:55 | 显示全部楼层
    我是的十八簿 2023-6-30 15:11:55 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-30 15:30:12 | 显示全部楼层
    ffycxyw2274436 2023-6-30 15:30:12 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-6-30 19:40:18 | 显示全部楼层
    掌舵的鱼1987 2023-6-30 19:40:18 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-7-3 07:23:48 | 显示全部楼层
    李志敏 2023-7-3 07:23:48 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表