xlrd介绍
- xlrd是一个用于从excel文件(无论是.xls还是.xlsx文件)读取数据和格式化信息的库。
xlrd安装
- 在安装python环境的前提下
- windows+R输入cmd进入终端
- 执行 pip install xlrd
xlrd导入
import xlrd as xr
'''
读取数据
获取工作簿
通过工作簿获取工作表
读取行列数据
'''
book = xr.open_workbook('demo,xls') #获取工作簿 注意:后缀不不能少
book.nsheets #获取工作表的个数
book.sheet_names() #获取工作表名字,返回list
book.sheets() #获取所有工作表信息
sheet_two = book.sheet()[1] #通过索引获取工作表 索引从0开始
sheet_one = book.sheet_by_index(0) #通过索引获取工作表
sheet_three = book.sheet_by_name('sheet3') #通过名字获取工作表
book.sheet_loaded(1) #通过索引判断工作表是否存在,返回布尔值
book.sheet_loaded('sheet1' or 'sheet2') #可以用逻辑运算符
python操作工作簿
import xlrd as xr
book = xr.open_workbook('demo.xls') #获取工作簿,如果路径或文件名有中文给前面加一个r保留原生字符
python读取excel行列数据
python读取excel行数据
'''
table.nrows #返回工作表的总行数
table.row(rowx) #返回由该行所有单元格组成的列表
table.row_slice(rowx,start_colx=0,end_colx=None) #返回由该行中开始列到结束列的单元格对象组成的列表
table.row_types(rowx,start_colx=0,end_colx=None) #返回该行切片后列表中每个单元格的数据类型
rowx --→ 指定行(默认从0开始)
start_colx --→ 开始列
end_colx --→ 结束列
'''
import xlrd as xr
book = xr.open_workbook('demo,xls') #读取工作簿
sheet_two = book.sheet_by_index(1) #读取工作表
sheet_two.nrows #获取工作表的有效总行数
sheet_two.row(6) #获取第七行,注意索引从0开始
sheet_two.row(6)[6:] #获取第七行第六列之后的所有数据
sheet_two.row_slice(6,6) #切片方法获取第七行第六列之后的所有数据
sheet_two.row_types(6) #获取第七行单元格类型
sheet_two.row_types(6,6) #获取索引为七行,六列后的数据类型
sheet_two.row_value(6) #只获取数据不获取类型
sheet_two.row_len(6) #获取第七行的有效数据
excel中数据类型对照表
cytpe | |
---|---|
0 | empty(空值) |
1 | string(字符串) |
2 | number(数字) |
3 | data(日期) |
4 | boolean(布尔) |
5 | error(错误) |
python读取excel列数据
'''
table.ncols #返回工作表的总列数
table.col(colx) #返回由该行所有单元格组成的列表
table.row_slice(colx,start_rowx=0,end_rowx=None) #返回由该列中开始行到结束行的单元格对象组成的列表
table.row_types(colx,start_rowx=0,end_rowx=None) #返回该行切片后列表中每个单元格的数据类型
table.col_values(colx,start_rowx=0,end_rowx=None) #返回该行切片后列表中每个单元格的值
rowx --→ 指定行(默认从0开始)
start_colx --→ 开始列
end_colx --→ 结束列
'''
import xlrd as xr
book = xr.open_workbook('demo,xls') #读取工作簿
sheet_two = book.sheet_by_index(1) #读取工作表
sheet_two.ncols #获取该工作表的有效列数
sheet_two.col(2) #获取列的数据
sheet_two.col_slice(2,0,10) #切片
sheet_two.col_types(2,0,10) #查看第2列,0-9行的数据类型
sheet_two.col_values(2,0,10)
python读取excel单元格
'''
table.cell(rowx,colx) #返回当前行列单元格内容
table.cell_value(rowx,colx) #返回当前行列单元格的数值
table.cell_type(rowx,colx) #返回当前行列单元格的内容
'''
excel合并后的单元格获取
'''
table.merged_cells #返回所有合并后的单元格的索引
注意返回形式为(开始行数,结束行数)(开始列数,结束列数)
table.cell_value(rowx,colx) #通过(开始行,开始列)获取合并后单元格
'''
python读取单元格数据
import xlrd as xr
book = xr.open_workbook('demo.xls') #读取工作簿
sheet_two = book.sheet_by_name('sheet1') #读取工作表
sheet_two.cell(6,6) #获取单元格内容
sheet_two.cell_value(6,6) #获取单元格的值
sheet_two.cell(6,6).value #获取单元格的值
sheet_two.cell_type(6,6) #获取单元格类型
sheet_two.cell(6,6).ctype #注意仅用type不行,是ctype
python获取合并单元格
import xlrd as xr
book = xr.open_workbook('demo.xls') #读取工作簿
sheet1 = book.sheet_by_index(0) #用索引方式读取工作表
sheet1.merged_cells #获取合并单元格的索引【(开始行,结束行)(开始列,结束列)】结束行与结束列往往取不到
sheet1.cell_value(0,0) #获取合并后单元格:(开始行,开始列)
sheet1.cell_value(2,0) #只获取数值不获取类型
sheet1.cell(2,0) #获取类型和数值
python读取excel表格练习
import xlrd as xr
import datetime
book = xr.open_workbook('demo.xls') #读取工作簿
table = book.sheet_by_index(0)
'''
(1,0)(1,1)(1,2)(1,3)
(2,0)(2,1)(2,2)(2,3)
(3,0)(3,1)(3,2)(3,3)
(4,0)(4,1)(4,2)(4,3)
'''
row_num = table.norws #获取工作表有效总行数
col_num = table.ncols #获取工作表有效总列数
keys = table.row_values(0) #获取标题栏的值
demo_data = []
for i in range(1,row_num):
table_data ={}
for j in range(col_num):
c_value = table.cell(i,j).value
c_type = table.cell_type(i,j)
if c_type == 2 and c_value % 10 == 0: #转换浮点数为整数
c_type = int(c_value)
elif c_type == 3: #转换日期类型
year,month,day,hour,minute,second = xr.xldate_as_tuple(c_value,0) #0代表日期模式
data = datetime.datetime(year,month,day,hour,minute,second)
c_value = data.strftime('%Y%m%d %H:%M:%S')
table_data[keys[j]] = c_value
demo_data.append(table_data)
print(demo_data)