xlrd模块用于读取excel文件,xlwt模块用于写入excel文件,二者搭配,可以灵活的操作excel文件。相比openpyxl模块,xlrd和xlwt可以操作不仅可以操作后缀为xlsx的文件,也可以操作后缀为xls的文件。首先来看下xlrd模块,按照workbook, sheet,cell的3个层级,用法如下 1. workbook 通过open_workbook方法来获取对应的workbook,代码如下 >>> import xlrd >>> workbook = xlrd.open_workbook('input.xlsx') 从workbook出发,可以通过整数下标索引或者对应的sheet name, 访问具体的sheet对象,代码如下 # 返回sheet的个数 >>> workbook.nsheets 4 # 返回sheet构成的list >>> workbook.sheets() [<xlrd.sheet.Sheet object at 0x02FFBC70>, <xlrd.sheet.Sheet object at 0x02FFBCB8>, <xlrd.sheet.Sheet object at 0x02FFBD00>, <xlrd.sheet.Sheet object at 0x02FFBD18>] >>> workbook.sheets()[0] <xlrd.sheet.Sheet object at 0x02FFBC70> # 通过索引访问sheet >>> workbook.sheet_by_index(0) <xlrd.sheet.Sheet object at 0x02FFBC70> # 返回sheet names构成的list >>> workbook.sheet_names() ['all_gene', 'target_gene', 'filter_gene', 'cnv_result'] # 通过name访问sheet >>> workbook.sheet_by_name('all_gene') <xlrd.sheet.Sheet object at 0x02FFBC70> 3. cell 从sheet对象出发,可以访问对应的行,列以及单元格,代码如下 >>> ws = workbook.sheet_by_name('all_gene') >>> ws.name 'all_gene' # 返回行数 >>> ws.nrows 27280 # 返回列数 >>> ws.ncols 21 # 通过行列索引,返回cell对象 >>> ws.cell(0, 0) text:'gene' # 通过行列索引,返回cell对应的值 >>> ws.cell_value(0,0) 'gene' # 通过以下函数对行或者列进行切片操作 # 第一个参数为列的索引 # 第二个参数为起始行 # 第三个参数为终止行 # 返回值 >>> ws.col_values(0, 0, 2) ['gene', 'LOC102725121'] # 返回cell对象 >>> ws.col_slice(0, 0, 2) [text:'gene', text:'LOC102725121'] 实际操作中,经常需要按照遍历excel文件,对应的代码如下
>>> for row in ws.get_rows(): ... print(row[0].value) get_rows方法行的生成器,通过遍历该生成器,访问每一行的元素,然后通过下标来访问对应的列元素,得到cell对象,通过cell对象的value属性获取单元格对应的值。 对于xlwt模块而言,其基本用法就简单很多,代码如下 >>> import xlwt >>> wb = xlwt.Workbook() >>> ws = wb.add_sheet('sheet1') # 单元格写入的两种方式 # 第一种 >>> ws.write(0,0,'A1') # 第二种 >>> ws.row(1).write(0,'A2') >>> wb.save('out.xls') 结合xlrd和xlwt模块,就可以方便灵活的读写excel文件了。
|