Manipular excel desde lisp

Ver el tema anterior Ver el tema siguiente Ir abajo

Manipular excel desde lisp

Mensaje por eliasp el Miér Mar 01, 2017 12:55 am

Buen día foro. Luego de un poco mas de un año de ausencia, regreso a la querencia. Como han de imaginar, un poco oxidado de lo casi nada que sabía, pero en fin. El hecho es que regreso con una situación un tanto común en excel, seguro que a mas de uno le paso.

El problema es que tengo algunas hojas d excel con datos formato, bordes, etc. Estoy limpiando la hoja para poder ser leída desde un lisp, pero.... quedan muchos renglones en blanco. Son varios archivos, con mas de 900 renglones cada uno. Si alguien sabe como resolver esto, con lisp, con algun macro, con lo que sea.... agradeceré mucho me ayuden.

Saludos y gracias..............

eliasp

Mensajes : 57
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por robierzo el Miér Mar 01, 2017 6:07 pm

No entiendo. ¿tú qué quieres exactamente, quitar las líneas en blanco? Eso lo puedes hacer desde excel, con filtro.
avatar
robierzo

Mensajes : 41
Fecha de inscripción : 17/03/2016
Localización : La Coruña

Ver perfil de usuario http://www.selmotopografia.es

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por Marco Jacinto el Jue Mar 02, 2017 4:22 pm

Elias, en el supuesto que tuvieras una hoja en excel con estos valores
Código:
"safdsf" nil nil nil nil nil nil nil nil
  nil nil nil "fds" nil nil nil nil nil
  nil nil "f" nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil "fs" nil nil nil "ds"
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil "ds" nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil "f" nil
  nil nil nil nil nil nil nil nil nil
  nil "fasf" nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil nil nil nil "f" nil nil nil
  nil nil nil nil nil nil nil nil nil
  nil nil "fas" nil nil nil nil nil nil
  nil nil nil nil nil "f" nil nil nil
Donde nil es una celda vacía, puedes usar el siguiente código para obtener solo las filas con datos.

Código:

;;;Uso:
;;;(EliminaFilasVacias Lst)
(DEFUN EliminaFilasVacias (lst / CT LSTDEEXCEL LSTFILASCONDATOS LSTFILASVACIAS X)  
  (FOREACH itm lst
    (IF (NOT (VL-EVERY '(LAMBDA (x)
  (NOT x)
 )
       itm
     )
 )
      (SETQ LstFilasConDatos (CONS itm LstFilasConDatos))
    )
  )
  (SETQ LstFilasConDatos (REVERSE LstFilasConDatos))
)

Marco Jacinto

Mensajes : 20
Fecha de inscripción : 12/08/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por nolo el Vie Mar 03, 2017 5:03 pm

O si lst es una lista:
Código:
(vl-remove nil lst)

Un saludo

nolo

Mensajes : 131
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por eliasp el Vie Mar 10, 2017 1:32 am

Primero que nada una disculpa por tardar en contestar...

Luego, Marco no son celdas vacías lo que necesito eliminar, son los renglones... ya que de renglón a renglón cambia el número de datos...

Voy a intentar con la opción que me da nolo, a ver como me va.

Saludos y gracias

eliasp

Mensajes : 57
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por eliasp el Vie Mar 10, 2017 1:49 am

Para que se vean lo que en realidad necesito. En el archivo anexo, llevo eliminados "a mano" hasta el renglón 1,010.... debe ser hasta el 3233....

https://www.dropbox.com/sh/uolzx214csq0sn9/AAB0lNSgm1ehn3d34soV839Za?dl=0

eliasp

Mensajes : 57
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por Marco Jacinto el Vie Mar 10, 2017 2:28 am

Pues creo que necesitas es la opción de nolo, yo supuse que obtenías los valores desde una hoja de excel, de ahí la solución que planteaba

Marco Jacinto

Mensajes : 20
Fecha de inscripción : 12/08/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por eliasp el Vie Mar 10, 2017 4:17 pm

Si Marco, yo también creí eso. Pero al convertir el CSV en lista, me di cuenta que no existen renglones nil.... todos tienen valores ("" "" "" ""...."") no son nil.... creo que no me queda mas que seguir "a mano"

Saludos y gracias........

PD: A menos que haya otra forma de leer el CVS.... ustedes dirán

eliasp

Mensajes : 57
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por Marco Jacinto el Vie Mar 10, 2017 4:54 pm

si en el codigo que te puse, cambias (NOT x) por (/= x "") debe funcionar, en una chance lo reviso para verificar si es cierto.

Marco Jacinto

Mensajes : 20
Fecha de inscripción : 12/08/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por eliasp el Vie Mar 10, 2017 5:45 pm

..... no funcionó.... a seguir pedaleando... gracias

eliasp

Mensajes : 57
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por eliasp el Vie Mar 10, 2017 6:31 pm

Mira Marco... y foro, me encontré este truco que me sirvió de maravilla. Aquí se los dejo:

SELECCIONAR FILAS. ...
Ir a Cinta de Opciones / Pestaña: Inicio / Grupo: Modificar / Buscar y seleccionar / Ir a Especial. ...
Activar la opción: Celdas en blanco. ...
Pulsar el botón Aceptar. ...
ELIMINAR FILAS.

Gracias.........

eliasp

Mensajes : 57
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por enrique calderon el Dom Abr 16, 2017 8:20 pm

La ultima opcion es realmente simple y efectiva,
Pero si lo quieres manipular mediante una rutina en vba  
la adjunto

Mediante esta rutina no tendras necesidad de hacerlo hoja por hoja

Sub elimina_renglones_en_blanco()

'Esta rutina elimina los renglones en blanco de todas las hojas del libro, comparando celdas en la columna 1
'Si quieres comparar las celdas en blanco de otra cololumna en el condicionante
'  ThisWorkbook.Sheets(Hoja.Name).Cells(renglon, 1) = ""
'  lo cambiarias por
'  ThisWorkbook.Sheets(Hoja.Name).Cells(renglon, numero_de_columna_deseado) = ""

Time1 = Time

For Each Hoja In Worksheets
renglon_termina = 0
   renglon_final = Worksheets(Hoja.Name).Cells(Rows.Count, 1).End(xlUp).Row
   If Hoja.Name <> "2016 Agosto" And Hoja.Name <> año & "2016 Septiembre" Then
          For renglon = 1 To renglon_final
               If ThisWorkbook.Sheets(Hoja.Name).Cells(renglon, 1) = "" Then
               ThisWorkbook.Sheets(Hoja.Name).Rows(renglon).Delete
               renglon = renglon - 1
               renglon_termina = renglon_termina + 1
               If renglon_termina = renglon_final Then renglon = renglon_final
               End If
           Next
End If
Next

Time2 = Time
tiempo_de_ejecution = Time2 - Time1
Worksheets("2016 Agosto").Cells(1, 10) = "Hora de inicio"
Worksheets("2016 Agosto").Cells(2, 10) = "Hora Final"
Worksheets("2016 Agosto").Cells(3, 10) = "Tiempo ejecucion"

Worksheets("2016 Agosto").Cells(1, 11) = Time1
Worksheets("2016 Agosto").Cells(2, 11) = Time2
Worksheets("2016 Agosto").Cells(3, 11) = tiempo_de_ejecution

End Sub

enrique calderon

Mensajes : 4
Fecha de inscripción : 25/01/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: Manipular excel desde lisp

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.