python中对excel工作表的基础操作:xlrd、xlwt模块笔记

news/2024/7/21 4:30:25 标签: python, excel, 笔记

模块介绍

(1)什么是xlrd模块?

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。

(2)为什么使用xlrd模块?

在UI自动化或者接口自动化中数据维护是一个核心,所以此模块非常实用。
xlrd模块可以用于读取Excel的数据,速度非常快,推荐使用!

官方文档:https://xlrd.readthedocs.io/en/latest/

重要的事情说三遍:仅支持.xls格式仅支持.xls格式仅支持.xls格式

xlrd单元格数据类型表示:

  • 0:empty
  • 1:string
  • 2:number
  • 3:date
  • 4:boolean
  • 5:error

准备工作

准备一张示例表格:D:\code\python\06.excel操作\pokes-001.xls 内容如下。
在这里插入图片描述

python">import xlwt, xlrd

data = xlrd.open_workbook(r"D:\code\python\06.excel操作\pokes-001.xls")
print("打开文件", data)

一、读取文件

python">print("通过索引顺序获取第一个工作表", data.sheets()[0])
print("获取全部sheet", data.sheets())
print("返回book中所有工作表的名字", data.sheet_names())
print(data.sheets()[0])  # 激活工作表对象
print(data.sheet_by_index(0))  # 根据索引获取工作表,0表示第一个,以此类推
print(data.sheet_by_name('Sheet1'))  # 根据名字sheetname(区分大小写)获取工作表

查看共有多少个工作表

python">print(len(data.sheet_names()))  # 返回所有工作表的名称组成的list的长度 3
print(data.nsheets)  # 返回excel工作表的数量 3

print("*" * 50)

行操作

python">sheet1 = data.sheet_by_index(0)  # 选择读取第一个工作表
print(sheet1.nrows)  # 有效行数
print(sheet1.row(0))  # 输出第一行数据,[text:'ID', text:'姓名', text:'性别', text:'年龄']
print(sheet1.row(1))  # 输出第2行数据,返回该行单元格对象组成的列表

print(sheet1.row_types(1))  # 获取单元格的数据类型,返回指定行数据的数据类型

print(sheet1.row(1)[3])  # 获取单元格的数据类型,number:12.0
print(sheet1.row(1)[2].value)  # 获取单元格value,男
print(sheet1.row_values(1))  # 得到指定行单元格的值,['001', '张三001', '男', 12.0]
print(sheet1.row_len(1))  # 得到单元格的长度

print("*" * 50)

excel_74">操作excel

python">sheet1 = data.sheet_by_index(0)  # 选择读取第一个工作表
print(sheet1.ncols)  # 有效列数
print(sheet1.col(1))  # 该列单元格对象组成的列表

print(sheet1.col(1)[2])  # 定位单元格获取值,1表示第二列,2表示第三行,查看字符类型
print(sheet1.col(1)[2].value)  # 定位单元格获取值,1表示第二列,2表示第三行,获取值
print(sheet1.col_values(1))  # 返回该列所有单元格的value组成的列表,其实就是将第二列的值组成一个列表
print(sheet1.col_types(1))  # 获取该列单元格的数据类型 [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

print("*" * 50)

单元格操作

python">sheet1 = data.sheet_by_index(0)  # 激活第一个工作表
print(sheet1.cell(1, 2))  # 1是行,2是列,输出:text:'男' ,text是文本

获取单元格数据类型

python">print(sheet1.cell_type(1, 2))  # 1
print(sheet1.cell(1, 2).ctype)  # 1

获取单元格的值

python">print(sheet1.cell(1, 2).value)  # 获取第二行,第三列单元格的值 男
print(sheet1.cell_value(1, 2))  # 男

print("*" * 150)

二、写入文件

python">import xlwt

# 创建一个workbook对象,就相当于创建了一个Excel文件
workbook = xlwt.Workbook(encoding='utf-8',style_compression=0)  # encoding:设置编码,可写中文;style_compression:是否压缩,不常用

# 创建一个sheet对象,相当于创建一个sheet页
worksheet = workbook.add_sheet('这是sheet1',cell_overwrite_ok=True) # cell_overwrite_ok:是否可以覆盖单元格,默认为False

# 向sheet页中添加数据:worksheet.write(行,列,值)
worksheet.write(0,0,'我要发财啦')  # 第1行第1列写入数据

# 将以上内容保存到指定的文件中
workbook.save('测试文件.xls')

运行结果如下图:
在这里插入图片描述

python">import xlwt

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('这是sheet1')

style = xlwt.XFStyle()  # 初始化样式
font = xlwt.Font()  # 为样式创建字体(font)

# 指定字体的具体属性(仅列出常用属性)
font.name = '宋'  # 指定字体
font.height = 300  # 和excel字体大小比例是1:20
font.bold = True  # 字体是否加粗
font.underline = True  # 字体是否下划线
font.struck_out = True  # 字体是否有横线
font.italic = True  # 是否斜体字
font.colour_index = 4  # 字体颜色

# 设定字体样式
style.font = font

# 向sheet页中添加数据
worksheet.write(0, 0, '无样式文本')
worksheet.write(0, 1, '有样式文本', style)

workbook.save('测试文件.xls')

运行结果如下图:
在这里插入图片描述

字体大小

excel字体大小比例是1:20,假设需要15号字体大小,则需要设置成300

字体颜色对照图

在这里插入图片描述

背景颜色设置(pattern)

python">import xlwt

workbook  = xlwt.Workbook(encoding='utf-8')
worksheet = workbook .add_sheet('这是sheet1')
worksheet.write(0,0,'无样式文本')

# 初始化样式
style = xlwt.XFStyle()

# 1. 为样式创建字体(font)
font = xlwt.Font()
# 指定字体的具体属性(仅列出常用属性)
font.name = '宋'   # 指定字体
font.height = 300   # 和excel字体大小比例是1:20
font.bold = True    # 字体是否加粗
font.underline = True   # 字体是否下划线
font.struck_out = True  # 字体是否有横线
font.italic = True  # 是否斜体字
font.colour_index = 4   # 字体颜色
# 设置style的各个属性的样式
style.font = font   # 设定字体样式
worksheet.write(2,0,'有样式文本(字体样式)',style)

# 2. 为样式创建背景图案(pattern)
pattern = xlwt.Pattern()
# 指定背景颜色
pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 设置背景颜色模式
pattern.pattern_fore_colour = 3    # 不同的值代表不同颜色背景
# 设置style的各个属性的样式
style.pattern = pattern # 设定背景图案样式
worksheet.write(4,0,'有样式文本(字体样式+背景图案样式)',style)

workbook .save('测试文件.xls')

在这里插入图片描述

边框设置(borders)

python">import xlwt

workbook  = xlwt.Workbook(encoding='utf-8')
worksheet = workbook .add_sheet('这是sheet1')

# 初始化样式
style = xlwt.XFStyle()
borders = xlwt.Borders()
# 设定边框属性
borders.left = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
# 设定边框样式
style.borders = borders
# 写入数据
worksheet.write(0,0,'无样式文本')
worksheet.write(2,0,'有样式文本(边框样式)',style)
# 保存.xls
workbook.save('测试文件.xls')

在这里插入图片描述

对齐方式设置(alignment)

python">import xlwt

workbook  = xlwt.Workbook(encoding='utf-8')
worksheet = workbook .add_sheet('这是sheet1')

# 初始化样式
style = xlwt.XFStyle()

# 对齐方式的设置(alignment)
alignment = xlwt.Alignment()

# 设置具体的对齐方式 : vert代表垂直对齐方式;horz代表水平对齐方式
alignment.vert = 0x01   # 0x00 上端对齐;0x01 居中对齐(垂直方向上);0x02 底端对齐
alignment.horz = 0x03   # 0x01 左端对齐;0x02 居中对齐(水平方向上);0x03 右端对齐

# 自动换行
alignment.wrap = 1 # 自动换行

# 设定设定对齐方式
style.alignment = alignment

# 写入数据
worksheet.write(0,0,'无样式文本')
worksheet.write(2,0,'有样式文本(设定对齐方式)',style)

# 保存.xls
workbook.save('测试文件.xls')

在这里插入图片描述

单元格格式(num_format_str)

python">import xlwt
from datetime import datetime

workbook  = xlwt.Workbook(encoding='utf-8')
worksheet = workbook .add_sheet('这是sheet1')

date_str = '2022-04-12'

style = xlwt.XFStyle()
num_format_str = 'yyyy/MM/dd'
style.num_format_str = num_format_str

# 写入数据
worksheet.write(0,0,date_str)
worksheet.write(2,0,datetime.strptime(date_str,'%Y-%m-%d').date(),style)

# 保存.xls
workbook.save('测试文件.xls')

列宽和行高

python">import xlwt
from datetime import datetime

workbook  = xlwt.Workbook(encoding='utf-8')
worksheet = workbook .add_sheet('这是sheet1')

# 写入数据
worksheet.write(0,0,'我是个很长的字符')
worksheet.write(0,4,'我也是个很长的字符哦')
worksheet.col(4).width=256*20 # 设计第4列宽度

# 保存.xls
workbook.save('测试文件.xls')

在这里插入图片描述

多行列合并写入

python">import xlwt

workbook  = xlwt.Workbook(encoding='utf-8')
worksheet = workbook .add_sheet('这是sheet1')

# 写入数据
worksheet.write(0,0,'无合并')
worksheet.write_merge(0, 3, 4, 7, '有合并')#1-4行,5-8列合并单元格

# 保存.xls
workbook.save('测试文件.xls')

在这里插入图片描述


http://www.niftyadmin.cn/n/406008.html

相关文章

ipad手写笔哪款好?性价比高的触控笔

在现代人的生活中,电容笔的身影随处可见,随着电容笔的广泛,其品牌和种类也越来越多,更多的人群追求性价比,苹果产品深受大家欢迎,但是大多数人都是被价格劝退,下面整理几款适合iPad用的平替电容…

Apple Vision Pro 内容开发制作

承接 Apple Vision Pro内容制作 3D模型制作 全新的平台。熟悉框架和工具。准备好为Apple Vision Pro设计和构建一个全新的应用程序和游戏世界。 沉浸 Apple Vision Pro提供了一个无限的空间画布来探索,实验和玩,让你自由地完全重新思考你的3D体验。人…

控制配置文件是否生效之@ConditionalOnProperty

文章目录 前言ConditionalOnProperty使用方法ConditionalOnProperty源码属性含义 使用逻辑demo属性值不是boolean类型属性值为boolean类型 前言 避免重复造轮子,就要自己动手写一下公共组件,或者公共类对外提供插件功能。有时候会有用不到的的一些配置类…

实用技巧:数据可视化综述

作为一名数据产品经理,不仅需要了解数据产品设计与研发的流程,数据可视化更是必不可少的技能之一。 通过数据可视化,数据产品经理可以更加直观地呈现数据信息,让用户更容易理解、解读数据。 可视化图形选择 1 设计的目的 在实…

为什么Spring和IDEA都不推荐使用@Autowired注解?!

大家在使用IDEA开发的时候有没有注意到过一个提示,在字段上使用Spring的依赖注入注解Autowired后会出现如下警告。 Field injection is not recommended (字段注入是不被推荐的) 但是使用Resource却不会出现此提示。 网上文章大部分都是介绍…

【Linux系统进阶详解】find+xargs与find+-exec原理分别介绍与区别精讲实战

find命令可以通过-exec选项和xargs命令来执行指定操作,二者的原理和使用方法有所不同,下面将分别进行介绍。 find命令与-exec选项 ``find命令的-exec`选项可以在查找到符合条件的文件时直接执行指定的命令。其基本语法如下: find /path/to/search -name "pattern"…

隧道模式HTTP代理使用代码示例

以下是使用Python实现隧道模式HTTP代理的代码示例: python import socket def handle_client(client_socket): # 接收客户端请求 request client_socket.recv(4096) # 解析请求头,获取目标主机和端口号 host request.split(b\r\n)[1].sp…

Fabric.js 使用自定义字体

theme: smartblue 本文简介 点赞 关注 收藏 学会了 如果你使用 Fabric.js 做编辑类的产品,有可能需要给用户配置字体。 这次就讲讲在 Fabric.js 中创建文本时怎么使用自定义字体、在项目运行时怎么修改字体、以及推荐一个精简字体库的工具。 学习本文前&#xff…