python里面的xlrd模块详解

本篇内容转自:https://www.cnblogs.com/insane-Mr-Li/p/9092619.html,并对原文一些模糊不清的地方进行修正,若有非议,请在文末留言,谢谢!

那我就以下几个问题对xlrd模块进行学习一下:

1.什么是xlrd模块?                 2.为什么使用xlrd模块?                  3.怎样使用xlrd模块?

1.什么是xlrd模块?

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

今天就先来说一下xlrd模块:

一、安装xlrd模块

  ♦ 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。

  ♦或者在cmd窗口 

 pip install  xlrd

二、使用介绍

 1、常用单元格中的数据类型(type)

 1. empty(空的)
 2. string(text)
 3. number
 4. date
 5. boolean
 6. error 
 7. blank(空白表格)

 2、导入模块

import xlrd

3、打开Excel文件读取数据

data = xlrd.open_workbook(filename)  #若文件名或路径包含中文并报错,解决方法见文末

4、常用的函数

excel中最重要的方法就是book和sheet的操作

1)获取book中一个工作表

table = data.sheets()[0]   #通过索引顺序获取

table = data.sheet_by_index(sheet_indx))  #通过索引顺序获取

table = data.sheet_by_name(sheet_name) #通过名称获取

#以上三个函数都会返回一个xlrd.sheet.Sheet()对象


names = data.sheet_names()    #返回book中所有工作表的名字

data.sheet_loaded(sheet_name or indx)   # 检查某个sheet是否导入完毕

  如:

2)行(row)的操作

nrows = table.nrows  #获取该sheet表中的有效行数

table.row_len(rowx) #返回该行有效的单元格个数,或者说是该行的有效列数

table.row(rowx)  #返回由该 行 中所有的单元格对象组成的列表

table.row_slice(rowx, start_colx, end_colx)  #返回由该行中第start_colx+1列到第end_colx列的单元格对象组成的列表

table.row_types(rowx, start_colx, end_colx)   #返回由该行中第start_colx+1列到第end_colx列的单元格的数据类型组成的列表

table.row_values(rowx, start_colx, end_colx)  #返回由该行中第start_colx+1列到第end_colx列的单元格的数据值组成的列表

#以上的start_colx和end_colx皆可省略不填,若省略,默认获取对应该行的全部数据

3)列(colnum)的操作

ncols = table.ncols   #获取列表的有效列数

table.col(colx)  #返回由该列中所有的单元格对象组成的列表

table.col(colx, start_rowx, end_rowx)  #返回由该列中第start_rowx+1行到第end_rowx行的单元格对象组成的列表,不建议这种用法,会产生歧义

table.col_slice(colx, start_rowx, end_rowx)  #返回由该列中第start_rowx+1行到第end_rowx行的单元格对象组成的列表

table.col_types(colx, start_rowx, end_rowx)    #返回由该列中第start_rowx+1行到第end_rowx行的单元格的数据类型组成的列表

table.col_values(colx, start_rowx, end_rowx)   #返回由该列中第start_rowx+1行到第end_rowx行的单元格的数据值组成的列表

4)单元格(cell)的操作  

table.cell(rowx,colx)   #返回第rowx+1行第colx+1列的单元格对象

table.cell_type(rowx,colx)  /  table.cell(rowx,colx).ctype   #返回第rowx+1行第colx+1列的单元格中的数据类型

table.cell_value(rowx,colx)  / table.cell(rowx,colx).value  #返回第rowx+1行第colx+1列的单元格中的数据值

table.cell_xf_index(rowx, colx)   # 不懂用法

问题: python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题,如下:

#打开文件
file = open(filename,'rb')

#打开excel文件
workbook = xlrd.open_workbook(filename)

#获取sheet
sheet = workbook.sheet_by_name(sheetname)

解决方案:对参数进行转码即可

filename = filename.decode('utf-8')

猜你喜欢

转载自blog.csdn.net/SCF_1104/article/details/83583667