IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python使用xlwt模块保存并设计excel格式文件 -> 正文阅读

[Python知识库]Python使用xlwt模块保存并设计excel格式文件

本文需要以下的库文件,读者可以按照下方的方法进行安装:

"""
需安装的库文件:
pip install xlwt
pip install patterns

换源网址:
- 豆瓣:http://pypi.douban.com/simple/
- 中科大:https://pypi.mirrors.ustc.edu.cn/simple/
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple

换源安装,例如:pip install xlwt -i https://pypi.tuna.tsinghua.edu.cn/simple
"""

首先使用xlwt简单写入一个excel文件:

import xlwt

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

# row代表行,col代表列
row = 0
col = 0
data = "写入的数据"
# 将数据写入对应的位置
sheet.write(row, col, data)

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果如下:
在这里插入图片描述

使用xlwt将一行数据写入excel文件中:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

# row代表行,col代表列
row = 0
col = 0
data = ["班级", "姓名", "性别", "年龄"]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将数据写入对应的位置
for i in data:
    sheet.write(row, num_col, i)
    num_col += 1

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果如下:
在这里插入图片描述

使用xlwt将多行数据写入excel文件中:

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将数据写入对应的位置
for data in data_list:
    for i in data:
        sheet.write(num_row, num_col, i)
        num_col += 1
    num_row += 1
    num_col = 0

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果如下:
在这里插入图片描述
讲完xlwt写入数据的方法,下面讲述设计excel表格格式的方法:

1.字体设计:

#格式信息,初始化样式
style = xlwt.XFStyle()
#字体基本设置
font = xlwt.Font()
# 设置字体
font.name = u'宋体'
#设置字体大小,11为字号,20为衡量单位
font.height = 11*20
#设置字体颜色,0:黑,1:白,2:红,3:亮绿,4:蓝,5:黄
#更多的颜色对应查看下面的单元格背景,颜色都是一一对应的,这里就不全部列举了
font.colour_index = 1
#加粗
font.bold = True
#斜体
font.underline = True
#下划线
font.underline = True

举个例子:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()
#字体基本设置
font = xlwt.Font()
# 设置字体
font.name = u'宋体'
#设置字体大小,11为字号,20为衡量单位
font.height = 11*20
#设置字体颜色,0:黑,1:白,2:红,3:亮绿,4:蓝,5:黄
#更多的颜色对应查看下面的单元格背景,颜色都是一一对应的,这里就不全部列举了
font.colour_index = 0
#加粗
font.bold = True
#斜体
font.underline = True
#下划线
font.underline = True

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将需求加入样式
style.font = font

# 将数据写入对应的位置
for data in data_list:
    for i in data:
        sheet.write(num_row, num_col, i, style)
        num_col += 1
    num_row += 1
    num_col = 0

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述

2.单元格设计

(1)单元格背景颜色

# 创建一个模式
pattern = xlwt.Pattern()
#设置其模式为实型
pattern.pattern = xlwt.Pattern.SOLID_PATTERN  
# 背景颜色
pattern.pattern_fore_colour = 1

举个例子:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()
# 创建一个模式
pattern = xlwt.Pattern()
#设置其模式为实型
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# 背景颜色
pattern.pattern_fore_colour = 3

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将需求加入样式
style.pattern = pattern

# 将数据写入对应的位置
for data in data_list:
    for i in data:
        sheet.write(num_row, num_col, i, style)
        num_col += 1
    num_row += 1
    num_col = 0

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述

(2)单元格对齐方式

# 设置单元格对齐方式
alignment = xlwt.Alignment()
# 0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
alignment.horz = 0x02
# 0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
alignment.vert = 0x01

#可设置自动换行
alignment.wrap = 1

举个例子:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()
# 设置单元格对齐方式
alignment = xlwt.Alignment()
# 0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
alignment.horz = 0x02
# 0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
alignment.vert = 0x01

#可设置自动换行
alignment.wrap = 1

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将需求加入样式
style.alignment = alignment

# 将数据写入对应的位置
for data in data_list:
    for i in data:
        sheet.write(num_row, num_col, i, style)
        num_col += 1
    num_row += 1
    num_col = 0

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述

(3) 单元格边框设置

#设置边框
borders = xlwt.Borders()

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

# 边框颜色设置:
borders.left_colour = 1
borders.right_colour = 1
borders.top_colour = 1
borders.bottom_colour = 1

举个例子:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()
#设置边框
borders = xlwt.Borders()

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

# 边框颜色设置:
borders.left_colour = 0
borders.right_colour = 0
borders.top_colour = 0
borders.bottom_colour = 0

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将需求加入样式
style.borders = borders

# 将数据写入对应的位置
for data in data_list:
    for i in data:
        sheet.write(num_row, num_col, i, style)
        num_col += 1
    num_row += 1
    num_col = 0

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述

(4)单元格行高和列宽

#1.设置列宽
#直接调用基础设置已经定义的sheet
sheet.col(1).width = 15 * 256
#15表示15个字符宽度,256是衡量单位

#2.设置行高
tall_style = xlwt.easyxf('font:height 720;')  # 36pt,类型小初的字号
first_row = sheet.row(0)
first_row.set_style(tall_style)

举个例子:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0


# 将数据写入对应的位置
for data in data_list:
    for i in data:
        # 1.设置列宽
        # 直接调用基础设置已经定义的sheet
        sheet.col(num_col).width = 15 * 256
        # 15表示15个字符宽度,256是衡量单位

        # 2.设置行高
        tall_style = xlwt.easyxf('font:height 720;')  # 36pt,类型小初的字号
        first_row = sheet.row(num_row)
        first_row.set_style(tall_style)
        sheet.write(num_row, num_col, i)
        num_col += 1
    num_row += 1
    num_col = 0

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述

(5)合并单元格

#合并单元格,注意!!!起始行列计数均为0
sheet.write_merge(first_row, last_row, first_col, last_col, u'合并')

举个例子:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()

# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0


# 将数据写入对应的位置
for data in data_list:
    for i in data:
        sheet.write(num_row, num_col, i)
        num_col += 1
    num_row += 1
    num_col = 0

#合并第二行到第四行的第二列到第四列
sheet.write_merge(1, 3, 1, 3, u'合并')

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述
完整代码如下:

import xlwt
import patterns as patterns

#定义一个workbook(文件),编码为utf-8
workbook = xlwt.Workbook(encoding='utf-8')

#增加一个表单,cell_overwrite_ok=True表示可以覆盖原单元格中数据,默认为False,覆盖时会抛出异常
sheet = workbook.add_sheet("对应的子表格", cell_overwrite_ok=True)

#格式信息,初始化样式
style = xlwt.XFStyle()

"""
字体设计
"""
#字体基本设置
font = xlwt.Font()
# 设置字体
font.name = u'宋体'
#设置字体大小,11为字号,20为衡量单位
font.height = 11*20
#设置字体颜色,0:黑,1:白,2:红,3:亮绿,4:蓝,5:黄
#更多的颜色对应查看下面的单元格背景,颜色都是一一对应的,这里就不全部列举了
font.colour_index = 0
#加粗
font.bold = True
#斜体
font.underline = True
#下划线
font.underline = True

"""
单元格背景颜色
"""
# 创建一个模式
pattern = xlwt.Pattern()
#设置其模式为实型
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# 背景颜色
pattern.pattern_fore_colour = 1

"""
单元格对齐方式
"""
# 设置单元格对齐方式
alignment = xlwt.Alignment()
# 0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
alignment.horz = 0x02
# 0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
alignment.vert = 0x01

#可设置自动换行
alignment.wrap = 1

"""
单元格边框设置
"""
#设置边框
borders = xlwt.Borders()

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

# 边框颜色设置:
borders.left_colour = 0
borders.right_colour = 0
borders.top_colour = 0
borders.bottom_colour = 0


# row代表行,col代表列
row = 0
col = 0
data_list = [["班级", "姓名", "性别", "年龄"], ["一年级", "张三", "男", "7"], ["二年级", "李四", "男", "9"], ["五年级", "王五", "女", "12"]]

# num_row代表行数,num_col代表列数
num_row = 0
num_col = 0

# 将需求加入样式
style.font = font
style.pattern = pattern
style.alignment = alignment
style.borders = borders

# 将数据写入对应的位置
for data in data_list:
    for i in data:
        """
        单元格行高和列宽
        """
        # 1.设置列宽
        # 直接调用基础设置已经定义的sheet
        sheet.col(num_col).width = 15 * 256
        # 15表示15个字符宽度,256是衡量单位

        # 2.设置行高
        tall_style = xlwt.easyxf('font:height 720;')  # 36pt,类型小初的字号
        first_row = sheet.row(num_row)
        first_row.set_style(tall_style)

        sheet.write(num_row, num_col, i, style)
        num_col += 1
    num_row += 1
    num_col = 0

#合并第二行到第四行的第二列到第四列 (为完整展示,暂不合并)
# sheet.write_merge(1, 3, 1, 3, u'合并')

# 保存数据到对应的excel中
workbook.save("编写文件.xls")

效果图如下:
在这里插入图片描述

下面是颜色图,上述代码涉及颜色的代码均在图上:
在这里插入图片描述
在这里插入图片描述
在此感谢博主@想学机器学习的rookie的博文:Python xlwt模块设置Excel样式
该博主的文章写得很详细,我这边做些补充,读者可以去看看博主@想学机器学习的rookie的文章,本次的博文写到这里了,欢迎大家的点赞,评论和收藏一波,代码中有错误或纰漏处也欢迎各位指出,我会在第一时间进行修改的。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:18:33  更:2022-05-16 11:18:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:50:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码