Python 读取Excel之xlrd篇
上一期给大家分享了如何用Python读取文本,这次给大家分享如何读取Excel表格内容,拿最常见的.xlsx和.xls格式来讲解。
本章主要知识点有:
- 读取整篇excel返回list[list[list]] 格式
- 读取指定sheet页内容返回list[list[]] 格式
- 读取任意一行或一列返回list[] 格式
正文:
读取Excel有多种方法,本章采用比较通用的xlrd库来实现,先读取文件,再指定到某sheet页进行读取
data = xlrd.open_workbook(filename)
table = data.sheet_by_name(sheetName)
如上代码中,将sheet页赋给了table变量,再根据table页的总行数和总列数,逐个输出单元格的内容
# 获取总行数和总列数
tRows = table.nrows
tCols = table.ncols #获取某个单元格的内容
table.cell(r,c).value
结合以上信息,可以完整的输出读取sheet页内容的函数,并输出list格式
def readBySheet(self, sheetName : str) -> list:
data = xlrd.open_workbook(self.files) # get table cont by sheet name
table = data.sheet_by_name(sheetName) tRows = table.nrows
tCols = table.ncols # read Excel
res = []
for r in range(tRows):
rescol = []
for c in range(tCols):
rescol.append(table.cell(r,c).value)
res.append(rescol)
return res
既然都可以输出某sheet页的内容了,那么读取整篇excel 的内容,只要知道所有sheet页的名称即可,xlrd库也提供了这样一种方法 data.sheet_names(),即输出seheet页的列表,结合以上代码,那么读取整篇excel的方法实现如下
def read(self) -> list:
data = xlrd.open_workbook(self.files)
tablelist = data.sheet_names() res = []
for name in tablelist:
res.append(self.readBySheet(name))
return res
扩展:
在开发项目中,有时并不需要读取整个table页的内容,或许只需要某一列或某一行的值,其实xlrd早就考虑到了,使用 table.row_values(row)和table.col_values(col),其中row 和 col 为行和列index,小编也将其封装好了,方便读者直接调用
def readAnyRows(self, sheetName : str, row : int) -> list:
data = xlrd.open_workbook(self.files)
table = data.sheet_by_name(sheetName)
return table.row_values(row) if table.nrows > row else 'row out of range' def readAnyCols(self, sheetName : str, col : int) -> list:
data = xlrd.open_workbook(self.files)
table = data.sheet_by_name(sheetName)
return table.col_values(col) if table.ncols > col else 'col out of range'
了解了以上几种方法,我相信在处理表格场景时都可以游刃有余。建议封装成模块,方便循环使用。如果想要现成的模块,评论+关注私信我,留下邮箱并回复关键词“excel”,我会第一时间发给你的哦。
后续我会介绍其他读取excel的方式,譬如openpyxl,pandas等,关注我,你会对Python越来越有兴趣!
Python 读取Excel之xlrd篇的更多相关文章
- Python 读取Excel数据 xlrd
#导入相关模块 from xlrd import open_workbook #打开excel file = open_workbook("test.xlsx") #获取sheet ...
- 利用xlrd模块实现Python读取Excel文档
# -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.x ...
- Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- python 读 excel 模块: xlrd
主要来自:[ python中使用xlrd.xlwt操作excel表格详解 ] 为了方便阅读, 我将原文两个模块拆分为两篇博文: [ python 读 excel 模块: xlrd ] [ python ...
- python操作excel表格(xlrd/xlwt)
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
- [转] Windows下使用Python读取Excel表格数据
http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...
- 【转】python操作excel表格(xlrd/xlwt)
[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...
- python 读取excel数据并将测试结果填入Excel
python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...
- python读取excel中单元格的内容返回的5种类型
(1) 读取单个sheetname的内容. 此部分转自:https://www.cnblogs.com/xxiong1031/p/7069006.html python读取excel中单元格的内容返回 ...
随机推荐
- 微信小程序实现连续扫码功能(uniapp)
注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...
- apt用法详解
目录 1. 常规操作 2. apt-cache 3. 配置apt-get的缓存路径 4. 常用工具集 4.1. 开发工具 4.2. 系统辅助 1. 常规操作 更新仓库 sudo apt-get upd ...
- SQL Beautifier & SQL2014自带的格式化工具
格式化工具(希望有几款集成在IDE中的格式化工具)为什么要说明这些,不是为说明这个工具而发,看到那几千行或集成在一起的存储过程觉得乱七八的不爽,后面将会强力训练下自己. --下面这款SQL Beaut ...
- TensorFlow从0到1之TensorFlow实现单层感知机(20)
简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,它只能解决线性可分的问题.虽然这限制了单层感知机只能应用于线性可分问题,但它具有学习能力已经很好了 ...
- Linux下常用命令(持续更新)
l: 列举目录下的所有文件 ll: 显示详细属性 pwd: 查看当前所在完整路径 cd: 变更文件夹(变更到根目录:cd + /:变更到上级目录:cd + ..) sudo: 允许利用超级用户权限执行 ...
- Linux MySQL集群搭建之主从复制
前期准备 准备两台Linux,一主,一从,具体Linux安装MySQL操作步骤:点我直达 集群搭建 注意事项 一主可以多从 一从只能一主 关闭主从机器的防火墙策略 chkconfig iptables ...
- .Net微服务实战之DevOps篇
技术只是基础 该系列的两篇文章<.Net微服务实战之技术选型篇>和<.Net微服务实战之技术架构分层篇>都是以技术角度出发描述微服务架构的实施. 如果技术选型篇叙述的是工具,那 ...
- 操作系统识别-python、nmap
识别操作系统主要是用于操作系统漏洞的利用.不管是windows还是linux系统,在安装完毕后都会默认启动一些服务,开启一些端口. 识别目标主机的系统最简单的方法就是发送ping包,windows起始 ...
- ceph集成openstack cinder
本环境ceph已经搭建,ceph搭建麻烦见本博客的其他文章 1 在cinder-volume节点安装ceph client yum install -y ceph-common 注意:glance要安 ...
- SpringBoot--异常统一处理
先上代码,不捕获异常和手动捕获异常处理: @GetMapping("/error1") public String error1() { int i = 10 / 0; retur ...