Python3学习笔记31-xlrd模块
xlrd模块是用来读取excel的第三方模块,需要下载安装后才能使用。新建一个excel,随便填充一些数据用来测试下。
# -*- coding: utf-8 -*-
import xlrd
#打开excel文件读取数据
exce = xlrd.open_workbook('C:/Users/ms/Desktop/test_xlrd.xlsx') #获取excel中对应的sheet
print('所有sheet名称',exce.sheet_names()) #获取所有sheet名称
sheets = exce.sheets() #获取所有sheets
#sheet = exce.sheets()[0] #也可以通过下标去访问某个具体的sheet
sheet1 = exce.sheet_by_name('Sheet1') #通过sheet名称获取
#sheet2 = exce.sheet_by_index(1) #通过下标获取某个sheet #获取sheet中行数和列数
nrows = sheet1.nrows
ncols = sheet1.ncols
print('对应sheet中行数:%d行,列数:%d列'% (nrows,ncols)) #获取sheet中整行或整列的数据(数组)
row1 = sheet1.row_values(3) #通过下标获取某一行的数据
col1 = sheet1.col_values(0) #通过下标获取某一列的数据
print('某行的数据:',row1)
print('某列的数据:',col1) #获取sheet中某个单元格的数据
cell_A3 = sheet1.cell(2,0).value #第三行第一列
cell_B2 = sheet1.cell(1,1).value #第二行第二列
cell_C3 = sheet1.cell(2,2).value #第三行第三列
print('第一列第三行:',cell_A3)
print('第二行第二列:',cell_B2)
print('第三行第三列:',cell_C3) #获取单元格数据类型
A3_ctype = sheet1.cell(2,0).ctype #数字类型
B2_ctype = sheet1.cell(1,1).ctype #str类型
C3_ctype = sheet1.cell(2,2).ctype #data类型
print('数字类型:',A3_ctype)
print('str类型:',B2_ctype)
print('data类型:',C3_ctype)
#ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
在打印整行数据和整列数据的时候,合并的单元格,只会在合并的第一行或者第一列会有数据,之后打印出来都是空白。另外打印的日期时间也是错误的。
# -*- coding: utf-8 -*-
import xlrd
exce = xlrd.open_workbook('C:/Users/ms/Desktop/test_xlrd.xlsx')
sheet1 = exce.sheet_by_name('Sheet1')
print(sheet1.cell(4,0).value)
print(sheet1.cell(3,0).value)
print(sheet1.cell(3,2).value)
print(sheet1.cell(3,1).value)
先看合并单元格,这个没有任何技巧。只能获取 合并行单元格读取行的第一个索引,合并列单元格读取列的第一个索引。这样才能读到值,读错了就是空值。
但是合并单元格可能是读到空值,excel本身也可能就存在空值。要怎么获取单元格所谓的‘第一行或列的索引的’,这需要事先知道哪些单元格是合并的
print(sheet1.merged_cells)
使用merged_cells可以获得合并单元格。返回的参数(row,row_range,col,col_range),返回的是行数索引,行数索引范围,列数索引,列数索引范围。注意这里返回的应该都是索引。
根据返回的这四个值可以计算出合并单元格范围。计算时不需要把范围算进去,比如(3,5,0,1)行数索引就是3,4.对应excel行数就是第四行,第五行。列数所以就是0,也就是第一列
而在取所谓的第一行或第一列索引时候,直接从返回的四个参数中,取第一个和第三个就行了。可以对照上面的代码。对比下。
也可以封装成一个方法
# -*- coding: utf-8 -*-
import xlrd
exce = xlrd.open_workbook('C:/Users/ms/Desktop/test_xlrd.xlsx')
sheet1 = exce.sheet_by_name('Sheet1')
def row_col(sheet):
merge = []
for(row,row_range,col,col_range) in sheet.merged_cells:
merge.append([row,col])
for index in merge:
print(sheet.cell(index[0],index[1]).value)
row_col(sheet1)

再来看日期格式
# -*- coding: utf-8 -*-
import xlrd
exce = xlrd.open_workbook('C:/Users/ms/Desktop/test_xlrd.xlsx')
sheet1 = exce.sheet_by_name('Sheet1') #处理单元格内容为data格式的数据
print(xlrd.xldate_as_datetime(sheet1.cell(2,2).value,0)) #转换成日期格式
print(xlrd.xldate_as_tuple(sheet1.cell(2,2).value,0)) #返回元组

有两种处理方式,一种转换成日期,一种是转换成元组
#如果ctype等于3,就用时间格式处理
def xldate_datetime(sheet,row,col):
if(sheet.cell(row,col).ctype==3):
date_value = xlrd.xldate_as_datetime(sheet.cell(row,col).value,0)
return date_value
print(xldate_datetime(sheet1,2,2))

可以简单封装成一个方法、
Python3学习笔记31-xlrd模块的更多相关文章
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python3学习笔记(urllib模块的使用)
转载地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None, ...
- 【转】Python3学习笔记(urllib模块的使用)
原文地址:https://www.cnblogs.com/Lands-ljk/p/5447127.html 1.基本方法 urllib.request.urlopen(url, data=None, ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- python自动化测试学习笔记-5常用模块
上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...
随机推荐
- 【转】第8章 前摄器(Proactor):用于为异步事件多路分离和分派处理器的对象行为模式
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- cmd 开启热点
开启热点,需要先打开Wifi,ssid 为 WiFi 名称,key 为密码 netsh wlan set hostednetwork mode=allow ssid=123 key=12345678 ...
- [JVM-3]Java垃圾回收(GC)机制和垃圾收集器选择
哪些内存需要回收? 1.引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1:当引用失效时,计数器值-1.任何时刻计数值为0的对象就是不可能再被使用的.这 ...
- Git(时光机-版本回退)
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...
- 如何计算UDP/TCP检验和checksum
如何计算UDP/TCP检验和checksum 一.下面的图是一个UDP的检验和所需要用到的所有信息,包括三个部分:1.UDP伪首部2.UDP首部3.UDP的数据部分(切记不要遗漏该部分,否则就~吐血了 ...
- webpack3.x版本实战案例【基础配置篇】(一)
本文旨在通过一个一个实战例子来学习webpack如何配置,更加深入的学习webpack在实战项目中如何配置. 我们学习哪些配置呢? [基础配置] 打包JS 编译ES6 编译typeScript 打包公 ...
- SpringBoot系列: Eclipse+Maven环境准备
这个链接比我写得更全面, http://tengj.top/2018/01/01/maven/ =============================20190115补充: maven 的一些插件 ...
- ASP.NET MVC 4 笔记
1. MVC2.MV3.MC4 的区别 1) MVC2 1. View 文件以*.aspx结尾,为原始html页面内容. 2. View 代码以<%代码-结束%>. 2) ...
- IL 学习笔记
先上几篇博客链接: 一步步教你读懂NET中IL(图文详解) C#基础之IL 详解.NET IL代码 C# IL DASM 使用 你必须知道的.NET <C# to IL>.<Expe ...
- 机器学习等知识--- map/reduce, python 读json数据。。。
map/ reduce 了解: 简单介绍map/reduce 模式: http://www.csdn.net/article/2013-01-07/2813477-confused-about-map ...