python - xlrd模块使用基本操作一览总表

xlrd模块式使用基本操作一览总表

Book(class) 工作薄对象,由xlrd.open_work(“example.xls”)返回

工作薄对象.nsheetssheets数
工作薄对象.sheet_namessheet名称列表
工作薄对象.sheetssheet列表
工作薄对象.sheet_by_index(sheetx)按序号提取sheet
工作薄对象.sheet_by_name(sheet_name)按名称提取sheet

Sheet(class)表对象,由Book object相关方法返回

表对象.namesheet名
表对象.nrows行数
表对象.ncols列数
表对象.cell(rowx,colx)第rowx行colx列的单元格
表对象.cell_type(rowx,colx)数据类型
表对象.cell_value(rowx,colx)数值
表对象.col(colx)第colx列所有单元格组成的列表
表对象.col_slice(colx, start_rowx=0, end_rowx=None)第colx列指定单元格组成的列表。colx表示是获取第几列的数据; start_rowx表示从索引为多少开始; end_rowx表示从索引为多少结束。end_rowx为None表示结束没有限制
表对象.col_types(colx, start_rowx=0, end_rowx=None)第colx列指定单元格数值类型组成的列表
表对象.col_values(colx, start_rowx=0, end_rowx=None)第colx列指定单元格数值组成的列表
表对象.row同样有col的各项操作,此处略去

Cell(class) 由Sheet object(s)相关方法返回

单元格对象.ctype一个int型变量,对应不同的数值类型。0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
单元格对象.value单元格的值

python读取excel中单元格的内容返回的有5种类型。
ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error。
即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。

# 判断ctype是否等于3,如果等于3,则用时间格式处理
if (sheet.cell(row,col).ctype == 3):
    date_value = xlrd.xldate_as_tuple(sheet.cell_value(rows,3),book.datemode)
    date_tmp = date(*date_value[:3]).strftime('%Y/%m/%d')

示例代码如下:

# -*- coding:utf-8 -*-
import xlrd  # 导入模块
import os
'''
    data.xlsx
number	A	B	C
1	    A1	B1	C1
2	    A2	B2	C2
3	    A3	B3	C3
4	    A4	B4	C4
'''
os.chdir(r'/Users/pyproject/testexcel')    # 修改工作路径
workbook = xlrd.open_workbook(filename='data.xlsx')    # filename是文件的路径名称
table = workbook.sheet_by_index(0)  # 通过索引顺序获取第一个工作表
'''
获取需要操作的sheet表格(有三种方法)
①通过索引获取 table = workbook.sheets()[0]
②通过索引顺序获取   table = workbook.sheet_by_index(0)
③通过sheet名称获取    table = workbook.sheet_by_name(sheet_name='Sheet1')
补充:获取工作薄中所有sheet名称  names = workbook.sheet_names()  --->['Sheet1', 'Sheet2', 'Sheet3']

Book(class) 由xlrd.open_work("example.xls")返回
nsheets:                      sheets数
sheet_names:                  sheet名称列表
sheets:                       sheet列表
sheet_by_index(sheetx):       按序号提取sheet
sheet_by_name(sheet_name):    按名称提取sheet

Sheet(class) 由Book object相关方法返回
name:                         sheet名
nrows:                                          行数
ncols:                                          列数
cell(rowx,colx):                                第rows行colx列的单元格
cell_type(rowx,colx):                           数据类型
cell_value(rows,colx):                          数值
col(colx):                                      第colx列所有单元格组成的列表
col_slice(colx,start_rowx=0,end_rowx=None):     第colx列指定单元格组成的列表
col_types(colx,start_rowx=0,end_rowx=None):     第colx列指定单元格数值类型组成的列表
col_values(colx,start_rowx=0,end_rowx=None):    第colx列指定单元格数值组成的列表
row同样有col的各项操作,此处略去

Cell(class) 由Sheet object(s)相关方法返回
ctype:    一个int型变量,对应不同的数值类型
value:    单元格的值
'''
# 获取sheet中有效行数,有效列数,返回该行的有效单元格长度
print(table.nrows, table.ncols, table.row_len(0))     # ---> 5 4 4

# 获取指定行或者列中所有的数据
# 获取指定行中的数据并以列表的形式返回: rowx表示是获取第几行的数据; start_col表示从索引为多少开始; end_colx表示从索引为多少结束,end_colx为None表示结束没有限制
print(table.row_values(rowx=1, start_colx=1, end_colx=None))    # --->['A1', 'B1', 'C1']
print(table.row(0))         # 返回由该行中所有的单元格对象组成的列表   # ---> [text:'number', text:'A', text:'B', text:'C']
print(table.row_slice(1))   # 返回由该行中所有的单元格对象组成的列表   # ---> [number:1.0, text:'A1', text:'B1', text:'C1']
print(table.row_types(0, start_colx=0, end_colx=None))   # 返回由该行中所有单元格的数据类型组成的列表   # ---> array('B', [1, 1, 1, 1])

# row同样有col的各项操作.获取指定列中的数据并以列表的形式返回: colx表示是获取第几列的数据; start_rowx表示从索引为多少开始; end_rowx表示从索引为多少结束,end_rowx为None表示结束没有限制
print(table.col_values(colx=1, start_rowx=1, end_rowx=None))    # ---> ['A1', 'A2', 'A3', 'A4']

print(table.cell(rowx=0, colx=1))  # 获取单元格内的组成对象和数据 ---> text:'A'
print(table.cell_value(rowx=0, colx=1))      # 获取指定单元格内的值 ---> A
print(table.cell_type(rowx=0, colx=1))       # 获取单元格的数据类型---> 1
print(table.cell(1, 1).ctype)    # (单元格的内容返回的有5种类型ctype: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error) ---> 1
'''运行结果
5 4 4
['A1', 'B1', 'C1']
[text:'number', text:'A', text:'B', text:'C']
[number:1.0, text:'A1', text:'B1', text:'C1']
array('B', [1, 1, 1, 1])
['A1', 'A2', 'A3', 'A4']
text:'A'
A
1
1
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值