Python中xlrd模块针对Excel

本文详细介绍了Python中的xlrd模块,用于读取Excel数据。xlrd提供多种操作,如读取工作簿、获取工作表、行、列和单元格数据。在UI自动化或接口自动化中,xlrd模块在数据维护方面表现出实用性,尤其在处理包含中文的文件名和sheet名时,通过转码可以避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请注意::

本文由下面三个方向来对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')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值