xlrd模块式使用基本操作一览总表
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) | 第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才能开始操作。
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')
示例代码如下:
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')
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: 单元格的值
'''
print(table.nrows, table.ncols, table.row_len(0))
print(table.row_values(rowx=1, start_colx=1, end_colx=None))
print(table.row(0))
print(table.row_slice(1))
print(table.row_types(0, start_colx=0, end_colx=None))
print(table.col_values(colx=1, start_rowx=1, end_rowx=None))
print(table.cell(rowx=0, colx=1))
print(table.cell_value(rowx=0, colx=1))
print(table.cell_type(rowx=0, colx=1))
print(table.cell(1, 1).ctype)
'''运行结果
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
'''