Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Filtar filas de mi xls, ultimo retoque

Estas en el tema de Filtar filas de mi xls, ultimo retoque en el foro de Python en Foros del Web. Hola amigos, acabo de iniciarme con Python y de una lista de producto de un distribuidor solo quiero las filas relacionas con el nombre de ...
  #1 (permalink)  
Antiguo 04/03/2013, 07:35
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Filtar filas de mi xls, ultimo retoque

Hola amigos, acabo de iniciarme con Python y de una lista de producto de un distribuidor solo quiero las filas relacionas con el nombre de fabricante APPLE, es un documento xls, asta ahí muy bien, por ahora muestro en la consola las columnas que quiero, pero no consigo guardarlas en un archivo o hoja nuevo, os muestro lo que tengo

Código Python:
Ver original
  1. import xlrd
  2. import xlwt
  3. workbook = xlrd.open_workbook('tarifa.xls')
  4. worksheet = workbook.sheet_by_name('tarifa')
  5.  
  6. wb = xlwt.Workbook()
  7. ws = wb.add_sheet('A Test Sheet',cell_overwrite_ok=True)
  8.  
  9. num_rows = worksheet.nrows - 1
  10. curr_row = -1
  11. contador_filas = 0
  12.  
  13. while curr_row < num_rows:
  14.     curr_row += 1
  15.     row = worksheet.row(curr_row)
  16.     fabricante=worksheet.cell(curr_row,4).value
  17.     if fabricante=="APPLE" :
  18.     #EL PROBLEMA VIENE APARTIR DE AKI
  19.             ws.row(row)
  20.             w.save('test2.xls')

Asta el ultimo if todo bien, pero la siguiente fila me falla, ¿qué me aconsejan?

Muchas graciassss
  #2 (permalink)  
Antiguo 04/03/2013, 10:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Filtar filas de mi xls, ultimo retoque

No tengo el archivo tarifa.xls como para probar tu script, pero en la linea 20, no tienes definida la variable w, creo que quieres decir ws.save() y otra cosa yo no pondría save dentro del ciclo, si no hasta después del ciclo.
  #3 (permalink)  
Antiguo 04/03/2013, 11:15
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: Filtar filas de mi xls, ultimo retoque

gracias por tu respuesta, el archivo is indiferente en el sentido de que ya guardo las lineas que kiero en la variable row, lo unico que quiero es insertar esas lineas en el xls.

mira te enseño como voy

Código Python:
Ver original
  1. import xlrd
  2. import xlwt
  3. workbook = xlrd.open_workbook('tarifa.xls')
  4. worksheet = workbook.sheet_by_name('tarifa')
  5.  
  6. wb = xlwt.Workbook()
  7. ws = wb.add_sheet('A Test Sheet',cell_overwrite_ok=True)
  8.  
  9. num_rows = worksheet.nrows - 1
  10. num_columns = worksheet.ncols -1
  11. curr_row = -1
  12. contador_filas = 0
  13.  
  14. while curr_row < num_rows:
  15.     curr_row += 1
  16.     row = worksheet.row(curr_row)
  17.     fabricante=worksheet.cell(curr_row,4).value
  18.     i=0
  19.     if fabricante=="APPLE" :
  20.         for i in [num_columns] :
  21.             ws.write(curr_row,i,row.cell(curr_row,i).value)
  22.            
  23.            
  24. wb.save('prueba_ultima.xls')

pero ahora no puedo verlo, me dejaba perfecto con tarifa.xls y sin querer la borre y al traerme el archivo con le mismo nombre a l amisma carpeta me da el siguiente error

Código Python:
Ver original
  1. Traceback (most recent call last):
  2.   File "C:\Users\FRANCISCO\My Documents\Aptana Studio 3 Workspace\prueba\editar_excel.py", line 3, in <module>
  3.     workbook = xlrd.open_workbook('tarifa.xls')
  4.   File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 443, in open_workbook
  5.     ragged_rows=ragged_rows,
  6.   File "C:\Python27\lib\site-packages\xlrd\book.py", line 94, in open_workbook_xls
  7.     biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  8.   File "C:\Python27\lib\site-packages\xlrd\book.py", line 1262, in getbof
  9.     bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
  10.   File "C:\Python27\lib\site-packages\xlrd\book.py", line 1256, in bof_error
  11.     raise XLRDError('Unsupported format, or corrupt file: ' + msg)
  12. xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<table>\r'

y no puedo seguir probando le codigo, graciassss

Última edición por churretin; 04/03/2013 a las 12:18
  #4 (permalink)  
Antiguo 04/03/2013, 12:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Filtar filas de mi xls, ultimo retoque

1.- El archivo si tiene que ver, por que así no tengo andar adivinando que datos estas usando.
2.- Segundo, no copies y pegues código sin saber que hace.
3.- Publica el error que te arroja, de otra forma no sabemos que esta mal.

Código Python:
Ver original
  1. import xlwt
  2. import xlrd
  3. book = xlrd.open_workbook("tarifa.xls")
  4. sh = book.sheet_by_index(0)
  5. wb = xlwt.Workbook()
  6. ws = wb.add_sheet('A Test Sheet',cell_overwrite_ok=True)
  7. i = 0
  8. for rx in range(sh.nrows):
  9.     row = sh.row(rx)
  10.     if row[3].value == 'APPLE':
  11.         for j, cell in enumerate(row):
  12.             ws.write(i, j, cell.value)
  13.         i += 1
  14. wb.save('example.xls')

Aquí te dejo el archivo tarifa.xls que use.
https://dl.dropbox.com/u/107554552/tarifa.xls
  #5 (permalink)  
Antiguo 04/03/2013, 14:49
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: Filtar filas de mi xls, ultimo retoque

Muchas gracias por tu codigo y tu riña contrustiva, ayer a esta hora apenas sabia que era python y por lo que e tenido que meterme de lleno por eso tanto copy paste, ahora poco a poco voy entendiendolo mejor, lo de mostrar el error que me dices, creo que no se a que te refieres cuando, tu codigo con tu archivo funciona perfectamente, pero con le mio no, me arroja el error anterior, esto sale en la pestaña de la consola en mi aptana, pero en la pestaña problem no me aparece nada, tienes alguna idea de lo que sucede, he buscado mucho y no doy con la tecla. graciassss
  #6 (permalink)  
Antiguo 04/03/2013, 14:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Filtar filas de mi xls, ultimo retoque

Puedes subir tu archivo para saber que esta pasando?
  #7 (permalink)  
Antiguo 04/03/2013, 15:05
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: Filtar filas de mi xls, ultimo retoque

Cita:
Iniciado por razpeitia Ver Mensaje
Puedes subir tu archivo para saber que esta pasando?

https://www.dropbox.com/s/3a07x5xy1k26gfx/tarifa.xls?m
  #8 (permalink)  
Antiguo 04/03/2013, 18:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Filtar filas de mi xls, ultimo retoque

Bueno, tu archivo no es un excel. Es un archivo HTML con extensión .xls

Así que me tome la libertad de convertirlo a excel.
https://dl.dropbox.com/u/107554552/tarifa2.xls

Y con un pequeño cambio al script ahora si funciona.
Código Python:
Ver original
  1. import xlwt
  2. import xlrd
  3. book = xlrd.open_workbook("tarifa2.xls")
  4. sh = book.sheet_by_index(0)
  5. wb = xlwt.Workbook()
  6. ws = wb.add_sheet('A Test Sheet',cell_overwrite_ok=True)
  7. i = 0
  8. for rx in range(sh.nrows):
  9.     row = sh.row(rx)
  10.     if row[4].value == 'APPLE':
  11.         for j, cell in enumerate(row):
  12.             ws.write(i, j, cell.value)
  13.         i += 1
  14. wb.save('example.xls')
Lo que no entiendo, si excel tiene filtros por que hacerlo en python?
  #9 (permalink)  
Antiguo 05/03/2013, 03:02
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: Filtar filas de mi xls, ultimo retoque

Muchas gracias todo solucionado, el por que soy tan bestia y no utilizo excel, es por dos motivos, tenia hace tiempo el gusanillo de python jijijiji y intento sentar las bases de algo mas complicado, muchas gracias por tu paciancia, eres un crack

Etiquetas: xls
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:55.