Python encuentra datos en Excel
Primero, instale la biblioteca xlrd
Puede descargar el paquete de la biblioteca xlrd e instalarlo localmente, o puede instalarlo mediante el comando pip. Aquí elijo el comando pip:<. /p>
pip install xlrd
2. Utilice xlrd para leer datos de Excel
Para obtener detalles de operación específicos, consulte la documentación de operación de la biblioteca xlrd. dos métodos para leer datos de Excel:
1. Leer datos según el nombre de la tabla de Excel:
1 def readExcelDataByName(fileName, SheetName): 2 table = Ninguno 3 errorMsg = Ninguno 4 intente: 5 datos = xlrd.open_workbook(fileName) 6 table = data.sheet_by_name(sheetName) 7 excepto excepción, msg: 8 errorMsg = msg
9 tabla de retorno, errorMsg
2 Obtener según el número de serie de la hoja de trabajo en Excel: p>
1 def readExcelDataByIndex(fileName, SheetIndex):2 table = None3 errorMsg = ""4 try:5 data = xlrd.open_workbook(fileName): 2 tabla = Ninguno3 mensaje de error = ""4 intento:5 datos = xlrd .open_workbook(nombre de la hoja):2 tabla = Ninguno3 mensaje de error = ""4 intento:5 datos = xlrd.open_workbook(nombre de archivo):2 tabla = Ningunoopen_workbook(nombre de archivo)6 table = data.sheet_by_index(sheetIndex)7 excepto excepción, msg:8 errorMsg = msg9 return table, errorMsg
3. Obtenga el número de serie correspondiente según el nombre de la columna, porque a veces, al leer datos de la columna de Excel, debe obtener el valor de la columna correspondiente a través del nombre de la columna del encabezado de la columna, así que escriba el siguiente nombre de la columna de retorno donde está el índice de la tabla. Luego puede obtener el valor de la columna directamente a través de table.cell_value(i, getColumnIndex(table, 'column name')).
1 def getColumnIndex(table, columnName):2 columnIndex = Ninguno 3 ?3 for i in range(table.ncols):5 4 if(table.cell_value(0, i) == columnName): 5 columnIndex = i 6 break
7 return columnIndex
La siguiente conexión necesita leer los datos en la tabla de Excel a continuación y obtener el valor correspondiente directamente según el nombre de la columna al leer. los datos.
Lea el valor correspondiente según el nombre de la columna, el código es el siguiente:
1 #! /usr/bin/python 2 # coding=utf-8 3 __author__ = 'Paul' 4 importar xlrd 5 importar chardet 6 importar rastreo 7 def getColumnIndex(tabla, nombre de columna): 8 columnIndex = Ninguno 9 #print table10 para i en rango( table.ncols):11 #print columnName12 #print table.cell_value(0, i)13 if(table.cell_value(0, i) == columnName):14 columnIndex = i15 break16 return columnIndex17 def readExcelDataByName(fileName, SheetName): 18 #print fileName19 tabla = Ninguno20 errorMsg = ""21 try:22 data = xlrd.open_workbook(fileName)23 table = data.sheet_by_name(sheetName)24 excepto excepción, msg:25 errorMsg = msg26 devolver tabla, errorMsg27 def readExcelDataByIndex(fileName) , índice de hoja):28 tabla = Ninguno29 errorMsg = ""30 intento:31 datos = xlrd.open_workbook( nombre de archivo)32 tabla = datos.sheet_by_index(índice de hoja)33 excepto excepción, mensaje:34 errorMsg = msg35 devolver tabla, errorMsg36 si __nombre__ = = '__main__' :37 #example38 xlsfile= 'F:/test_AutoTesting/TestCase/RunList.xlsx'39 table = readExcelDataByName(xlsfile, 'Sheet1')[0]40 #Obtener el valor de la primera fila 41 testcase_id = table. cell_value (1, getColumnIndex(table,'TestCaseID'))42 app_config = table.cell_value(1, getColumnIndex(table,'APPConfig'))43 print u ))43 44 print u'El ID del caso de prueba es: %s'% ( testcase_id)45 imprime la información de configuración como: %s'%(app_config)
Los resultados son los siguientes:
4. Lea el texto o los valores en Excel. se han convertido a números de punto flotante.
A veces el valor de Excel es 20, pero el valor leído se convierte en 20.0, lo cual es inconsistente con lo que queremos, especialmente cuando realizamos pruebas automáticas de UI, necesitamos desplegar. para seleccionar el valor de una opción no seleccionada.
Lo que actualmente pienso es la siguiente declaración:
if isinstance(inputValue,float): #determina si el valor leído es un float
if inputValue==int(inputValue): #determina si el valor leído es el mismo que el valor convertido a int, y si lo es, convierte a int. Si inputValue = int(inputValue)
inputValue = int(inputValue)
inputValue = str(inputValue) #Convertir a str