您的位置:首页 > 编程语言 > Python开发

Python xlrd(excle)中EXCLE的数据的获取

2019-04-14 20:27 531 查看

逼着自己写点东西,终有一天会为自己的变化感动的
一、创建一个需要读取的文件对象

import os
import xlrd

filepath = os.getcwd()  # 获取当前文件的地址
filename = 'filename.xls'
filepath = os.path.join(filepath,fliename) # 拼接出完成的文件路径
workbook = xlrd.open_workbook(filepath)

二、常用的操作方法、函数

1.操作的对象主要是book和sheet
2.获取sheet对象的常用方法
2.1 workbook.sheets()   #返回一个sheet对象的列表。。
2.2 workbook.sheet_by_index(0)  #通过索引获取对象,返回的是一个对象
2.3 workbook.sheet_by_name('name') # 通过sheet的名称获取指定的sheet的对象
3.获取book的sheet的名称
3.1 workbook.sheet_names()  #返回所有sheet名称的列表
3.2 workbook.sheet_loaded(sheet_name or index)  #判断需要的表是否导入
示例:
print(workbook.sheet_names())
print(workbook.sheet_loaded('Data'))

三、行的操作(sheet)

1.获取有效行数(获取的是整个表格中有效的行数)
#定义一个sheet对象,sheet_data = workbook.sheet_by_name('Data')
rows = sheet_data.nrows   # 返回一个int 类型有效行数,是整个sheet的有效行数
2.获取一行中所有单元格中 数据类型:数据
2.1 获取一行
rowdata = sheet_data.row(23) #返回第23行的所有单元格 数据类型:数据 [text:'Pass', number:60.0]
2.2获取特定位置的数据
rowdata = sheet_data.row_slice(32,2,3) # 返回获取单元格 数值类型和内容

3.获取行中单元格的数据类型
3.1 数据类型
ctype : 0: empty    1: string(text) 2: number 3: date 4: boolean  5: error 6: blank
3.2 获取单元格数据类型类表
rowtype = sheet_data.row_type(32) # 返回一个元祖,其中[1]的数据为所有行的数据类型
rowtype = sheet_data.row_type(32,3,7) # 返回一个元祖,其中[1]的数据为所有行的数据类型
4.获取单元格的数据
4.1 sheet_data.row_values(32)  #只返回指定行,所有的数据
4.2 sheet_data.row_values(32,0,5)  #返回指定列的行数据

5.指定行的有效长度
5.1 rowcount = sheet_data.row_len(32) #返回该行的有效数据个数。(有时与sheet_data.ncols相同)

四、列的操作

`1.获取有效列数(获取的是整个表格中总的有效列数)
1.1 colscount = sheet_data.ncols
2.获取一列中所有单元格中 数据类型:数据
2.1 col_style_value = sheet_data.col(18)
2.2 col_style_value = sheet_data.col_slice(18,0,5)
3.获取列中单元格的数据类型
3.1 col_types = sheet_data.col_types(18)
3.2 col_type = sheet_data.col_types(18,0.5)
4.获取单元格的数据
4.1 col_values = sheet_data.col_values(18)
4.1 col_value = sheet_data.col_values(18,0,5)

`
五、单元格的操作

1.返回指定单元格的对象
1.1 sheet_data.cell(17,2)  #返回的是对象
1.2 sheet_data.cell(17,2).value  # 对返回的对象,获取其值
1.3 sheet_data.cell_value(17,2)  #返回对象的值
2.返回指定单元格的数据类型
2.1 sheet_data.cell_type(17,2) # 返回对象的类型
2.2 sheet_data.cell(17,2).ctype # 对返回的对象,获取其类型

六、问题处理

1.编码问题
sheetname = workbook.sheet_names().decode('UTF-8')
2.合并单元格的获取处理
2.1获取文件是需要增加也给处理
workbook = xlrd.open_workbook(filePath,formatting_info=True) #在workbook对象获取时增加formatting_info = True
2.2获取所有的合并单元格
merged = sheet_data.merged_cells  #(row,row_range,col,col_range)
print(merged)     #[(1, 2, 0, 2), (1, 2, 2, 5), (1, 2, 5, 8)]  1,2行合并,其实就是一样,0,2列合并,就是第一列和第二列合并。merged返回的是低位索引
2.3循环获取所有的单元格内的数据
mergedlist = []
for row,row_range,col,col_range in merged:
mergedlist.append((row,col))
for index in mergedlist:
value = sheet_data.cell_value(index[0],index[1])
print(value)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: