一.xlrd模块
官方文档:https://pypi.org/project/xlrd/
1.概述
(1)功能:
xlrd是用于读取Excel文件数据的Python库,支持支持xlsx和xls格式
(2)安装:
pip install xlrd
2.对象
(1)Excel文件:
xlrd.book.Book()
#######################################################################
获取所有工作表:[<SheetList>=]<workbook>.sheets()
通过索引获得指定工作表:[<sheet>=]<workbook>.sheet_by_index(<sheetx>)
通过表名获得指定工作表:[<sheet>=]<workbook>.sheet_by_name(<sheet_name>)
判断指定工作表是否导入成功:[<sof>=]<workbook>.sheet_loaded(<sheet_name_or_index>)
#参数说明:
workbook:指定Excel文件;为xlrd.book.Book
SheetList:返回所有工作表;为xlrd.sheet.Sheet list
sheetx:指定工作表的索引;为int
sheet:返回工作表;为xlrd.sheet.Sheet
sheet_name:指定表名
sheet_name_or_index:指定工作表;为int(索引)/str(表名)
#######################################################################
>>> sheets=workbook.sheets()
>>> for sheet in sheets:
... print(sheet)
...
<xlrd.sheet.Sheet object at 0x000001FBA9DB06A0>
<xlrd.sheet.Sheet object at 0x000001FBA9DB0640>
<xlrd.sheet.Sheet object at 0x000001FBA9DB0700>
>>> sheets[0]
<xlrd.sheet.Sheet object at 0x000001FBA9DB06A0>
>>> sheet=workbook.sheet_by_index(0)
>>> workbook.sheet_loaded(0)
True
(2)工作表:
xlrd.sheet.Sheet()
#######################################################################
工作表的行数:<sheet>.nrows
工作表的列数:<sheet>.ncols
#参数说明:
sheet:指定工作表;为xlrd.sheet.Sheet
合并单元格的信息:[<merged_cells_list>=]<sheet>.merged_cells
#参数说明:
merged_cells_list:合并单元格的信息;为list,元素为(<row_start>(含),<row_end>(不含),<col_start>(含),<col_end>(不含))
#######################################################################
获取指定行:[<rl>=]<sheet>.row(<rowx>)
获取指定行中指定列范围:[<rl>=]<sheet>.row_slice(<rowx>[,start_colx=0,end_colx=None])
获取指定行中指定列范围的值:[<rvl>=]<sheet>.row_values(<rowx>[,start_colx=0,end_colx=None])
获取指定行中指定列范围的数据类型:[<t>=]<sheet>.row_types(<rowx>[,start_colx=0,end_colx=None])
获取指定行的长度:[<len>=]<sheet>.row_len(<rowx>)
获取所有行:[<rows>=]<sheet>.get_rows()
#参数说明:
rowx:指定行的索引;为int
start_colx,end_colx:共同指定要获取的列的索引范围;均为int
rl:返回指定行;为list,元素均为<type>:<val>
rvl:返回指定行的值;为list
t:返回指定行的数据类型;为array.array
#empty为0,string为1,number为2,date为3,boolean为4,error为5
rows:返回所有行;为generator
获取指定列:[<cl>=]<sheet>.col(<colx>)
获取指定列中指定行范围:[<cl>=]<sheet>.col_slice(<colx>[,start_rowx=0,end_rowx=None])
获取指定列中指定行范围的值:[<cvl>=]<sheet>.col_values(<colx>[,start_rowx=0,end_rowx=None])
获取指定列中指定行范围的数据类型:[<t>=]<sheet>.col_types(<colx>[,start_rowx=0,end_rowx=None])
获取指定列的长度:[<len>=]<sheet>.col_len(<colx>)
获取所有列:[<cols>=]<sheet>.get_cols()
获取指定单元格:[<cell>=]<sheet>.cell(<rowx>,<colx>)
#对合并单元格,使用起始行/列的索引
获取指定单元格的值:[<cellv>=]<sheet>.cell_value(<rowx>,<colx>)
获取指定单元格的数据类型:[<it>=]<sheet>.cell_type(<rowx>,<colx>)
#参数说明:
cell:返回单元格;为xlrd.sheet.Cell
#######################################################################
>>> sheet.nrows
101
>>> sheet.ncols
1
>>> sheet.row_values(0)
['评价等级']
>>> sheet.row(0)
[text:'评价等级']
>>> sheet.row_types(0)
array('B', [1])
(3)单元格:
xlrd.sheet.Cell()
#######################################################################
<cell>.
3.方法
(1)读取Excel文件:
读取Excel文件:[<workbook>=]xlrd.open_workbook([filename=None,logfile=sys.stdout,verbosity=0,use_mmap=USE_MMAP,file_contents=None,encoding_override=None,formatting_info=False,on_demand=False,ragged_rows=False])
#参数说明:
filename:指定要打开的Excel文件;为str
#注意:虽然默认filename=None,但其不能接受None作为值
workbook:返回Excel文件;为xlrd.book.Book
#实例:
>>> workbook=xlrd.open_workbook("习题3.1.xls")
(2)读取日期时间数据:
将Excel日期时间数据转换为tuple:[<DTTuple>=]xlrd.xldate_as_tuple(<xldate>,<datemode>)
#参数说明:
xldate:指定Excel日期时间数据;为float
datemode:指定日期模式;为0(1900-based)/1(1904-based)
DTTuple:返回日期时间元组;为tuple
#######################################################################
将Excel日期时间数据转换为datetime.datetime:[<DTDatetime>=]xlrd.xldate_as_datetime(<xldate>,<datemode>)
#参数说明:
DTDatetime:返回日期时间;为datetime.datetime
二.xlwt模块