elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [Python] Buscar y obtener el valor de una celda concreta de excel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Buscar y obtener el valor de una celda concreta de excel  (Leído 5,935 veces)
hsk75rv

Desconectado Desconectado

Mensajes: 36



Ver Perfil
[Python] Buscar y obtener el valor de una celda concreta de excel
« en: 26 Diciembre 2016, 18:39 pm »

Hola a todos!  :D

A continuación quiero compartir con vosotros un sencillo script que he hecho para obtener el valor de una determinada celda que sabemos que está en un archivo Excel pero que no sabemos su posición.

Imaginemos que tenemos un archivo Excel con productos que tenemos en una tienda.
A la vez, imaginemos que su estructura es del tipo:
Código:
PRODUCTO	PRECIO	DISPONIBLE
HP 1500 SI
CANON 300 NO
MACBOOK 2000 SI


Si quisiéramos por ejemplo buscar el producto HP que suponemos que está en el excel y, si
sabemos además que para cada producto tenemos 3 columnas que indican, a parte del PRODUCTO en sí, el PRECIO y si está o no DISPONIBLE podemos usar el siguiente script:

Código
  1. from xlrd import open_workbook,XL_CELL_TEXT
  2. from xlrd.sheet import ctype_text
  3. import re
  4.  
  5. def xls_KeyValue(file, row_KeySeacrh, col_KeySearch):
  6. pos_RowSearch = None
  7. pos_ColSearch = None
  8. wb = open_workbook(file, 'rb')
  9. sh = wb.sheet_by_index(0)
  10. row_KeySeacrh = re.compile(row_KeySeacrh)
  11. col_KeySearch = re.compile(col_KeySearch)
  12.  
  13. for rows in range(sh.nrows):
  14. rows_int = rows # Stores the number of row where row_KeySearch will match
  15. rows = str(sh.row(rows))
  16.  
  17. if (row_KeySeacrh.search(rows)):
  18. pos_RowSearch = rows_int
  19.  
  20. for cols in range(sh.ncols):
  21. cols_int = cols # Stores the number of col
  22. cols = str(sh.col(cols))
  23. if col_KeySearch.search(cols):
  24. pos_ColSearch = cols_int
  25. return((sh.cell(pos_RowSearch, pos_ColSearch)))
  26. else:
  27. continue
  28. else:
  29. continue
  30.  
  31.  



Para hacer uso de la función lo haríamos así:

Código
  1. print(xls_KeyValue(file,'HP','DISPONIBLE'))

El primer parámetro de la función es el archivo EXCEL (xls) que queremos analizar; el segundo argumento, row_KeySeacrh le indica a la función la fila en la cual está el dato o producto del cual queremos obtener su valor correspondiente de excel y, col_KeySearch indica la columna en la cual está el valor o, el estado del producto que indicamos en row_KeySeacrh.


Así pues,
Código
  1. print(xls_KeyValue(file,'HP','DISPONIBLE'))

daría como resultado 'text:SI' (puesto que el PRODUCTO HP, el valor de la columna DISPONIBLE para ese producto es SI).

Espero que el código os sirva y sobretodo, me gustaría saber cómo hacerlo más legible o más entendible o si es óptimo u no (habría que parsear la salida porque aparecen elementos que son propios de cómo el módulo xlrd trabaja).


Gracias !  :D


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programcion en excel. modificar valor en la misma celda
Dudas Generales
josco 0 2,832 Último mensaje 11 Junio 2012, 07:30 am
por josco
Buscar palabra en celda Excel
Programación General
Lain0x 2 3,266 Último mensaje 2 Diciembre 2013, 07:36 am
por Lain0x
Como obtener el valor de una celda seleccionada en un data grid
Desarrollo Web
a.silvaa08 0 1,962 Último mensaje 17 Abril 2015, 22:25 pm
por a.silvaa08
obtener valor de celda de datagridview
.NET (C#, VB.NET, ASP)
d91 2 4,741 Último mensaje 23 Diciembre 2015, 14:36 pm
por d91
Buscar en archivo de excel un valor y darme detalles de la fila con python
Scripting
SERGIO_@PRENDE 3 4,755 Último mensaje 16 Septiembre 2021, 23:53 pm
por SERGIO_@PRENDE
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines