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

news2025/7/9 10:13:05

模块介绍

(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 内容如下。
在这里插入图片描述

import xlwt, xlrd

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

一、读取文件

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(区分大小写)获取工作表

查看共有多少个工作表

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

print("*" * 50)

行操作

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列

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)

单元格操作

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

获取单元格数据类型

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

获取单元格的值

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

print("*" * 150)

二、写入文件

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')

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

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)

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)

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)

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)

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')

列宽和行高

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')

在这里插入图片描述

多行列合并写入

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.coloradmin.cn/o/619032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

突然断电没保存的文档如何找回?给你支几招!

概述:突然断电没保存的文档如何找回?我们在办公中经常会用到Word/PPT/EXCEL等文档,要是正在编辑时,电脑突然断电了,而文档还来得及保存怎么办?不要着急,下面教你找回未保存的文档。 一、突然断…

nodered-环境搭建及使用

nodered-环境搭建及使用 一、准备工作 - 安装node.js二、 nodered安装2.1 windows10环境下安装2.2 linux环境下安装 三、 nodered使用3.1 面板操作3.2 公共节点的使用3.3 上下文、全局变量 四、node缓存清理五、后台运行六、 nodered卸载 IBM发行了一套开源可视化界面开发工具&…

Hive学习---6、文件格式和压缩

1、文件格式和压缩 1.1 Hadoop压缩概述 由于Hive是相当于与Hadoop的客户端,所以hadoop会啥压缩,Hive基本就会啥压缩。 压缩格式算法文件扩展名是否可切分DEFLATEDEFLATE.deflate否GzipDEFLATE.gz否bzip2bzip2.bz2是LZOLZO.lzo是SnappySnappy.snappy否…

页面置换算法(LRU,CLOCK,LFU)

在操作系统的数据库中,使用驱逐算法来实现内存和磁盘之间的交互。当内存空间已满且需要将磁盘上的页面添加到内存中时,就需要将内存中的一个页面换出,以保证内存空间不会溢出。我们希望尽可能多地访问内存中的页面。 LRU算法 LRU算法&#…

0基础学习VR全景平台篇第38章:场景功能-AI虚拟人实操完整教程

AI虚拟人功能正式上线! 依托“虚拟数字人引擎”结合VR全景,为各行各业提供虚拟形象生成、驱动、交互服务,帮助海量用户的VR全景作品,打造成为更具沉浸感的VR交互项目,提升作品变现能力。 功能位置示意 一、什么是AI虚…

会声会影视频乱码什么原因 会声会影视频乱码怎么处理

会声会影编辑视频的过程中,如果遇到素材乱码的问题,是会让人十分崩溃的。毕竟素材来之不易,无论是重新下载还是重新录制素材,操作起来都是相当困难的。那么,会声会影视频乱码什么原因,会声会影视频乱码怎么…

C++设计模式之原型模式(Prototype)

[C]22种设计模式的C实现大纲 文章目录 定义别名前言1. 问题2. 解决方案 结构1. 基本实现2. 原型注册表实现 适用场景实现方式优点缺点与其他模式的关系实例 定义 原型是一种创建型设计模式,使你能够复制已有对象,而又无需使代码依赖它们所属的类。 别…

利用fabric绘画矩形和多边形

需求在一张图片上标注矩形和多边形,支持回显; fabric版本:4.6.0; Fabric.js 是一个功能强大且操作简单的 Javascript HTML5 canvas 工具库。 官方文档 参考链接 组件代码drawer.vue createUuid 是为了让每一个图形有自己的id&…

【 Python 全栈开发 - 语法基础篇 - 20 】数据可视化

文章目录 一、数据可视化二、pandas1. 折线图2. 散点图3. 柱状图4. 饼图 三、matplotlib1. 折线图2. 散点图3. 柱状图4. 饼图 四、seaborn1. 安装和导入Seaborn2. 加载数据集3. 绘制散点图4. 绘制直方图5. 绘制核密度图6. 绘制条形图7. 绘制热力图 五、plotly安装plotly创建图表…

chatgpt赋能python:如何重新运行Python程序:完整指南

如何重新运行Python程序:完整指南 Python是最受欢迎的编程语言之一,因为其语法简单易懂,使得编写高效可读性代码更加轻松。但在编程过程中经常会出现需要重新运行程序的情况,本文将为您介绍如何重新运行Python程序。 重新运行Py…

chatgpt赋能python:Python如何降低memory的方法

Python如何降低memory的方法 Python已经成为了世界上最流行的编程语言之一,它在开发web应用、机器学习、数据分析等领域中拥有广泛的应用。然而,由于Python的内存管理机制,可能会导致程序的内存占用过高,影响系统的性能。在本文中…

excel文档翻译软件怎么使用?告诉你怎么翻译整个excel文档

excel是一款电子表格软件,广泛应用于数据分析、统计和管理等领域。然而,当我们需要处理包含其他语言的excel文档时,可能会遇到语言障碍。不用担心,现在有一些方便的软件可以帮助我们轻松翻译excel文档。今天我们就一起来看看excel…

UniApp个人总结:新建页面大汇总

文章目录 往期回顾正文本篇目标环境安装如何新建模板页面页面布局推荐新建模板文件 总结 往期回顾 uniapp 踩坑记录 uni.$on为什么不能修改data里面的数据 uniApp页面通讯大汇总,如何页面之间传值 uniApp 页面通讯统一解决方案 uniapp sqlite 数据库操作封装 un…

一致性模型

首先明确一下分布式的组成定义,为下面打好铺垫 都做到了让系统“表现得像只有一个副本”。它们的不同在于,前一种排序遵循了不同用户的操作的时间先后顺序,而后一种排序没有。实际上,如果我们要求系统满足线性一致性,就…

什么是创新,为何如此难,又能解决啥-非AI撰写

什么项目创新?机器人技术创新?能解决下文中的问题呢? 这是近两个月以来,也许唯一一篇,我自己码字写的博客。 有感于一些课程,比如: 这一类课程最为典型的特点就是课程名称上有“创新”这两个字…

Matlab基础入门

Matlab简介 矩阵实验室(matrix&laboratory) R2022a:2022上半年的版本 R2022b:2022下半年的版本 Matlab界面 命令行窗口 与使用者直接进行交互,相当于一个计算器 >> 11ans 2 >> 5-2ans 3 >&…

再谈如何在python3.10等环境中搞崩wordcloud

如果你能搞崩python中的wordcloud,让它无法运行,基本上python的第三方依赖库的问题就好简单了。我们以搞崩python3.8 为例。 让python3.8运行词语图程序的时候出现truetype fonts 错误!!! 方法如下: pyth…

chatgpt赋能python:Python如何运行两次

Python如何运行两次 Python是一种高级编程语言,非常受欢迎,因为它易于学习,简单易用,开放性强,而且功能强大。Python常用于处理各种任务,包括数据分析、Web应用开发、人工智能、自动化测试等。此外&#x…

噪声参数估计相关

文章目录 噪声参数估计相关1. Estimation Of Signal Dependent Noise Parameters From A Single Image2. Practical Poissonian-Gaussian noise modeling and fitting for single-image raw-data3. Simplified noise model parameter estimation for signal-dependent noise4. …

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

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