请注意::
本文由下面三个方向来对Python中的xlrd模块展开学习
1.什么是xlrd模块?
2.如何使用xlrd模块??(即xlrd模块的方法)
3.为什么使用xlrd模块???
一、什么是xlrd模块?
- Python做数据分析操作Excel时主要用到xlrd和xlwt这两个模块库,其中xlrd对Excel进行读操作,而xlwt是写操作。
- 安装xlrd模块
1.在Python环境下,去官网下载安装http://pypi.python.org/pypi/xlrd
2.pip安装
pip install xlrd
3.anaconda环境下 使用jupyter编写时选择Python3 可以直接import 无需安装十分方便
二、如何使用xlrd模块?
- 常用单元格中的数据类型:
0 empty(none),1 string(text),2 number,3 date,4 boolean,5 error,6 blank(空白表格) - 导入模块
import xlrd
- 读取数据
open_workbook(文件名及路径)
data =xlrd.open_workbook(filename)
- 常用函数
Excel中最重要的两个方法就是对book和sheet的操作
1.获取book中的一个sheet工作表
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是否导入完毕
读取一个sheet内容
s1 = pd.read_excel('workbook1.xlsx',sheet_name='Sheet1')
s2 = pd.read_excel('workbook1.xlsx',sheet_name='Sheet2')
s3 = pd.read_excel('workbook1.xlsx',sheet_name='Sheet3')
s2
合并这三个sheet
第一种:先合并再改索引
s=pd.concat([s1,s2,s3],axis=0) #合并三个表 axis=0 表示按行操作 纵向合并
s.reset_index() #对新表进行索引重置
第二种:重置索引合并
s=pd.concat([s1,s2,s3],axis=0,ignore_index=True)#重置索引合并
s
第三种:for循环合并(要求sheet名有规律)
df=pd.DataFrame()
for i in sheetname:
df_i = pd.read_excel('workbook1.xlsx',sheet_name=i) #利用for循环 sheet名一定要有规律
df = pd.concat([df,df_i],axis=0,ignore_index=True)
df
第四种:append合并
s=s1.append([s2,s3],ignore_index=True) #append方法合并
s
2、行操作
nrows = table.nrows #获取该sheet中的有效行数
table.row(rowx) #返回由该行中所有的单元格对象组成的列表
table.row_slice(rowx) #返回由该列中所有的单元格对象组成的列表
table.row_types(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据类型组成的列表
table.row_values(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据组成的列表
table.row_len(rowx) #返回该列的有效单元格长度
3、列操作
ncols = table.ncols #获取列表的有效列数
table.col(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表
table.col_types(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据类型组成的列表
table.col_values(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据组成的列表
4、单元格操作
table.cell(rowx,colx) #返回单元格对象
table.cell_type(rowx,colx) #返回单元格中的数据类型
table.cell_value(rowx,colx) #返回单元格中的数据
table.cell_xf_index(rowx, colx) # 暂时还没有搞懂
三、为什么使用xlrd模块?
在UI自动化或者接口自动化中数据维护是一个核心,所以此模块非常实用
python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题
问题现象:
1、使用open()函数、xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录。
2、获取sheet时若包含中文,也会报错。
#打开文件
file = open(filename,'rb')
#打开excel文件
workbook = xlrd.open_workbook(filename)
#获取sheet
sheet = workbook.sheet_by_name(sheetname)
解决方案:
对参数进行转码即可。如:filename = filename.decode('utf-8')