sheet相关代码:
1 import xlrd 2 workbook=xlrd.open_workbook('1224.xlsx',on_demand=True)#打开文件 3 sheet_name=workbook.sheet_names() #所有sheet的名字 4 print(sheet_name) 5 print("*"*100) 6 sheets=workbook.sheets()#返回可迭代的sheets对象 7 for i ,sheet in enumerate(sheets): 8 print("the sheet{0}\'s sheetname is {1}".format(i+1,sheet.name)) 9 print(workbook.nsheets)#获取sheet的个数 10 print("*"*100) 11 print(sheets[0].name) 12 print("*"*100) 13 print(workbook.sheet_by_index(3).name) 14 print("*"*100) 15 print(workbook.sheet_by_name('Index').number) 16 #注意:work.sheet_by_name和index获得的是对象 17 print(workbook.sheet_by_name('Index')) 18 print(workbook.sheet_by_index(3))
结果:
['TemplateInfo', 'Index', 'GBssFunction', 'GSiteBaseBandShare', 'GMocnArea', 'GBssIftaMa', 'GGsmCell', 'GCellIfta', 'GHandoverControl', 'GPsHandoverControl'] **************************************************************************************************** the sheet1's sheetname is TemplateInfo the sheet2's sheetname is Index the sheet3's sheetname is GBssFunction the sheet4's sheetname is GSiteBaseBandShare the sheet5's sheetname is GMocnArea the sheet6's sheetname is GBssIftaMa the sheet7's sheetname is GGsmCell the sheet8's sheetname is GCellIfta the sheet9's sheetname is GHandoverControl the sheet10's sheetname is GPsHandoverControl 10 **************************************************************************************************** TemplateInfo **************************************************************************************************** GSiteBaseBandShare **************************************************************************************************** 1Process finished with exit code 0
2.行列相关代码:
1 import xlrd 2 workbook=xlrd.open_workbook('1224.xlsx',on_demand=True)#打开文件 3 sheet_name=workbook.sheet_names() #所有sheet的名字 4 i=0 5 while i <workbook.nsheets: 6 sheet_name=workbook .sheet_by_index(i).name 7 nrows=workbook.sheet_by_index(i).nrows 8 ncols=workbook.sheet_by_index(i).ncols 9 print("{0} has {1} rows and {2} cols".format(sheet_name,nrows,ncols)) 10 i+=1 11 print("*"*100) 12 print(workbook .sheet_by_index(5).col(5)) 13 print("*"*100) 14 print(workbook.sheet_by_index(5).row_values(1)) 15 print("*"*100) 16 print(workbook.sheet_by_index(5).col_values(1))
结果:
C:\Users\zte\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/zte/PycharmProjects/radioparametercheck/workbook.py TemplateInfo has 6 rows and 2 cols Index has 31 rows and 256 cols GBssFunction has 6 rows and 164 cols GSiteBaseBandShare has 9 rows and 169 cols GMocnArea has 5 rows and 8 cols GBssIftaMa has 5 rows and 6 cols GGsmCell has 788 rows and 167 cols GCellIfta has 788 rows and 7 cols GHandoverControl has 788 rows and 166 cols GPsHandoverControl has 788 rows and 9 cols **************************************************************************************************** [text:'MaArfcnList', text:'Frequency List', text:'long[16][0..1023]', text:'Arfcn of MAARFCNLIST is separated by semicolon', text:'R-W-I'] **************************************************************************************************** ['RESULT', 'Modification Indication', 'Managed Element Object ID', 'IFTAMA ID', 'Frequency Band of IftaMa', 'Frequency List'] **************************************************************************************************** ['MODIND', 'Modification Indication', 'A,D,M,P', 'A:Add, D:Delete, M:Modify, P:Pass', ''] Process finished with exit code 0
单元格的值:
1 import xlrd 2 workbook=xlrd.open_workbook('1224.xlsx',on_demand=True)#打开文件 3 sheet_name=workbook.sheet_names() #所有sheet的名字 4 i=0 5 sheet_name = workbook.sheet_by_index(5).name 6 nrows = workbook.sheet_by_index(5).nrows 7 ncols = workbook.sheet_by_index(5).ncols 8 print(nrows,ncols) 9 while i <nrows: 10 j=0 11 while j <ncols: 12 print(workbook.sheet_by_index(5).cell(i,j),end="") 13 j+=1 14 print("") 15 i += 1 16 print("*"*100) 17 print(workbook.sheet_by_index(5).cell(4,3)) 18 print("*"*100) 19 print(workbook.sheet_by_index(5).cell(4,3).value) 20 print("*"*100) 21 print(workbook.sheet_by_index(5).cell_value(4,3)) 22 print("*"*100) 23 print(workbook.sheet_by_index(5).row(4)[3].value) 24 print("*"*100) 25 print(workbook.sheet_by_index(5).col(3)[4].value)
结果:
C:\Users\zte\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/zte/PycharmProjects/radioparametercheck/workbook.py 5 6 text:'RESULT'text:'MODIND'text:'MEID'text:'GBssIftaMaId'text:'FreqBand'text:'MaArfcnList' text:'RESULT'text:'Modification Indication'text:'Managed Element Object ID'text:'IFTAMA ID'text:'Frequency Band of IftaMa'text:'Frequency List' text:'S:Success\nF:Fail'text:'A,D,M,P'text:'long:[1..4095]'text:'long:[1..1]'text:'0:GSM900\\(0 .. 124,975 .. 1023\\)\n1:EGSM900\\(0 .. 124,975 .. 1023\\)\n2:DCS1800\\(512 .. 885\\)\n3:RGSM\\(0 .. 124,955 .. 1023\\)\n4:PCS1900\\(512 .. 810\\)\n7:GSM850\\(128..251\\)'text:'long[16][0..1023]' text:''text:'A:Add, D:Delete, M:Modify, P:Pass'text:''text:''text:''text:'Arfcn of MAARFCNLIST is separated by semicolon' text:''text:''text:'Primary Key'text:'Primary Key'text:'R-W-I'text:'R-W-I' **************************************************************************************************** text:'Primary Key' **************************************************************************************************** Primary Key **************************************************************************************************** Primary Key **************************************************************************************************** Primary Key **************************************************************************************************** Primary Key Process finished with exit code 0
多行多列,制定行列切片的值:
1 import xlrd 2 workbook=xlrd.open_workbook('1224.xlsx',on_demand=True)#打开文件 3 nrows = workbook.sheet_by_index(5).nrows 4 ncols = workbook.sheet_by_index(5).ncols 5 print(nrows,ncols) 6 sheet=workbook.sheets()[5] 7 #row_values(rowx,start_colx=0,end_colx=None) 8 print(sheet.row_values(4,3,5)) 9 #col_values(colx,start_rowx=0,end_rowx=None) 10 print(sheet.col_values(4,3,5))
结果:
C:\Users\zte\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/zte/PycharmProjects/radioparametercheck/workbook.py 5 6 ['Primary Key', 'R-W-I'] ['', 'R-W-I'] Process finished with exit code 0
读取多行多列的值:
1 def get_rows(sheet,start_rowx=0,end_rows=0): 2 rows_value=[sheet.row_values(rowx) for rowx in range (start_rowx,end_rows)] 3 return rows_value 4 print(get_rows(sheet,4,5)) 5 def get_cols(sheet,start_colx=0,end_colx=0): 6 cols_value=[sheet.col_values(colx) for colx in range (start_colx,end_colx)] 7 return cols_value 8 print(get_cols(sheet,1,3))
结果:
C:\Users\zte\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/zte/PycharmProjects/radioparametercheck/workbook.py 5 6 [['', '', 'Primary Key', 'Primary Key', 'R-W-I', 'R-W-I']] [['MODIND', 'Modification Indication', 'A,D,M,P', 'A:Add, D:Delete, M:Modify, P:Pass', ''], ['MEID', 'Managed Element Object ID', 'long:[1..4095]', '', 'Primary Key']] Process finished with exit code 0
获得连续区域的值:
1 import xlrd 2 workbook=xlrd.open_workbook('1224.xlsx',on_demand=True)#打开文件 3 nrows = workbook.sheet_by_index(5).nrows 4 ncols = workbook.sheet_by_index(5).ncols 5 print(nrows,ncols) 6 sheet=workbook.sheets()[5] 7 8 def get_range(sheet,start_rowx=0,end_rowx=0,start_colx=0,end_colx=0): 9 range_values=[sheet.row_values(rowx,start_colx,end_colx)for rowx in range(start_rowx,end_rowx)] 10 return range_values 11 print(get_range(sheet,0,1,1,3))
结果:
C:\Users\zte\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/zte/PycharmProjects/radioparametercheck/workbook.py 5 6 [['MODIND', 'MEID']] Process finished with exit code 0
读取单个sheet页的值
1 import xlrd 2 def readsheet(filename,sheetindex=0,sheetname=None): 3 # 读取Excel文件的一个sheet页 4 workbook=xlrd.open_workbook(filename,on_demand=True) 5 if sheetname is not None: 6 sheet=workbook.sheet_by_name(sheetname) 7 else: 8 sheet=workbook.sheet_by_index(sheetindex) 9 rows=[sheet.row_values(row)for row in range(sheet.nrows)] 10 return rows 11 ret=readsheet('1224.xlsx',sheetindex=0) 12 print(ret)
结果:
C:\Users\zte\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/zte/PycharmProjects/radioparametercheck/workbook.py [['NE Type:', 'Multi-mode Controller'], ['Template Type:', 'Plan'], ['Template Version:', 'V12.11'], ['Data Type:', 'gsm_radio'], ['', ''], ['', '']] Process finished with exit code 0
读取整个excel
1 import xlrd 2 def readbook(filename): 3 """ 4 读取整个Excel文件 5 :param filename: 6 :return: sheet名字列表 7 字典类型的数据 bookdata={sheetname1:row1,sheetname2:row2} 8 """ 9 workbook=xlrd.open_workbook(filename,on_demand=True) 10 sheetnames=workbook.sheet_names() 11 bookdata={} 12 for sheetname in sheetnames: 13 sheet=workbook.sheet_by_name(sheetname) 14 rows=[sheet.row_values(row)for row in range(sheet.nrows)] 15 bookdata.setdefault(sheetname,rows) 16 return sheetnames,bookdata 17 print(readbook("1224.xlsx"))