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中单元格的内容返回 ...
随机推荐
- AlertController的使用
UIAlertView 随着苹果上次iOS 5的发布,对话框视图样式出现在了我们面前,直到现在它都没有发生过很大的变化.下面的代码片段展示了如何初始化和显示一个带有“取消”和“好的”按钮的对话框视图. ...
- Express4.x之中间件与路由详解及源码分析
Application.use() Application.router() express核心源码模拟 一.express.use() 1.1app.use([path,] callback [, ...
- c++逻辑与或非优先级
按优先级从高到低排列:!.&&.||,!的优先级最高,&&的优先级居中,||的优先级最低.
- cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech
//32dk2j_cpp_纯虚函数与抽象类cc32a_demo-txwtech//纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要/ ...
- 西门子S7-300 PLC视频教程(百度网盘)收集于网络-供参考学习
百度网盘地址: 西门子300 PLC视频教程 群文件里面可以找到. 下载: https://blog.csdn.net/txwtech/article/details/93016190
- 基于NACOS和JAVA反射机制动态更新JAVA静态常量非@Value注解
1.前言 项目中都会使用常量类文件, 这些值如果需要变动需要重新提交代码,或者基于@Value注解实现动态刷新, 如果常量太多也是很麻烦; 那么 能不能有更加简便的实现方式呢? 本文讲述的方式是, 一 ...
- 【Java】错误: 需要class, interface或enum
今天在用cmd实现mvn package操作时跳出来的报错! 网上搜索到的结论是因为编码问题而产生的,具体原因就不深究了 要详细了解可以查看以下链接https://blog.csdn.net/qq_3 ...
- SpringMVC中Map、Model、ModelMap、ModelAndView之间的关系及区别
首先,在了解这三者之前,需要知道一点:SpringMVC在调用方法前会创建一个隐含的数据模型(Model),作为模型数据的存储容器, 成为”隐含模型”. 如果controller方法的参数为Moedl ...
- springboot项目打war包发布到外置tomcat
第一步:修改pom.xml 1. <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> ...
- ES6躬行记 笔记
ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向