Page 1 of 1

Archivo plano de Clipper a Excel

Posted: Wed Feb 08, 2012 10:55 pm
by Cgallegoa
Hola amigos,

Necesito hacer una rutina que convierta un archivo plano hecho en nuestro viejo Clipper a archivo en Excel, pero encolumnándolo.

Esta es una muestra del archivo plano:
Image

Como saben el archivo plano pone cada línea con todo completo sin separadores de columnas. En cliente necesita que los valores estén en sus respecivas columnas para hacer cálculos con ellos. Llevo dándole una semana y no encuentro cómo hacerlo. El programa en Clipper arroja más de 50 informes, de entre 2 y 20 columnas y no tengo acceso a las fuentes El pasar el archivo a Excel lo hago con TExcelScrìpt, pero cómo identifico las columnas para que excel me las separe. Cualquier sugerencia o rutina mágica será agradecida de aquí a la eternidad.

Un abrazo,

Carlos Gallego

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 12:23 am
by Mauricio
Carlos,

porque no lo haces separando _ con comas (,) y lo importas desde excel

guarda un archivo de excel en formato CSV y copia el formato que deja


Saludos,
Mauricio

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 8:19 am
by hmpaquito
Carlos,

Si mal no entiendo la única opcion que tienes es generar el excel a partir del fichero .txt; no tienes acceso a los fuentes.
Siendo esto asi, se trataria de purificar los datos buscando patrones que aislan las columnas del resto de datos del .txt.
Patrones de aislamiento de columnas:
1) Segunda linea de separacion del listado
2) Caracter separador de columna
3) No se ve en tu imagen, pero necesitamos algo para detectar la linea de totales, para no incluirlos en la excel.

Ademas hay que especificar tipo Caracter a las columnas que pueden contener numeros pero que no son numeros, por ejemplo el codigo de cuenta...

Creo que se puede conseguir: sólo hay que trabajarlo un poco.

Saludos

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 9:08 am
by Pedro
Hola Carlos

Y no podrías hacerlo por el tamaño de _?.
En tu imagen el campo código de la cuenta parece que tiene 21 caracteres, y si te fijas en la fila de los nombres de las columnas, tienes un carácter que hace de límite entre ellos, con eso puedes saber que longitud tiene cada campo, sumarlos para el total de la línea, una variable por campo,o un array, para meter el valor leído y después pasarlo
al excel.

Es una idea

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 2:58 pm
by Cgallegoa
Mauricio, hmpaquito, Pedro, gracias por sus respuestas.

Ya le dí por ahí la vuelta. Como les indicaba son mas de 50 informes que genera el programa original y como no tengo las fuentes no puedo ponerle algún caracter que me marque como separador. Por otro lado, los informes no son homologados. Es decir, en algunos hay un caracter que podría tomar como separador, en otros no hay nada, simplemente el nombre de las columnas. Todos son diferentes. Los hay de diferentes anchos en columnas y formas. Algunos tienen líneas, otros no.

Lo único que se me ocurre es lo siguiente:
1.- Poner en pantalla el informe y para que el usuario lo vea y cuente líneas y caracteres e indique a partir de qué linea comienza el encolumnado, cuántas columnas debe tener y _ para cada columna. Esa información la guardo en una tabla para que la próxima vez que pida ese informe no tenga que volver a hacerlo.
2.- La tabla tendrá el primer campo siempre de una longuitud de 250 caracteres para que entren los textos de los títulos de los informes. Las siguientes columnas, tendrán longitud de acuerdo a lo indicado por el usuario
3.- Luego, con TTxtFile cargo el fichero texto, lo recorro, elimino caracteres que no tengan que ver con texto y número (letra negrilla, salto de página, tamaños de letra, etc), y voy tomando datos de acuerdo a las longitudes indicadas para las columnas, y creo el archivo excel con TExcelScrip.

Un poco engorroso pero no se me ocurre nada más. Qué les parece ?

Si logro hacerlo subo el código por si a alguien más le puede servir.

Saludos, y nuevamente gracias por su ayuda,

Carlos Gallego

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 3:15 pm
by hmpaquito
Carlos,

Pues "ya metidos en gastos", es decir, ya que vas a crear una especie de configuracion para exportacion a Excel, lo que se podria hacer seria crear una .dbf con los siguientes campos

Titulo
IniCol1
FinCol1
TipoCol1
....
IniColn
FinColn
TipoColn

Esa .dbf la rellenarias TU, y el usuario no tendria nada mas que seleccionar el .txt que quiere "traducir", y el proceso exportador buscaria el titulo de entre todos los que tiene la .dbf y obtendria su configuracion de exportacion a Excel.

Saludos

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 5:11 pm
by Cgallegoa
hmpaquito,

Exacto, esa es la idea, pero de todas formas lo voy a dejar abierto para que el usuario haga sus ajustes o agregue configuración para otros informes. Yo le entrego unos preconfigurados y él puede crear nuevos.

Saludos,

Carlos Gallego

Re: Archivo plano de Clipper a Excel

Posted: Thu Feb 09, 2012 7:30 pm
by sysctrl2
saludos .

Code: Select all

cCadena := oTxt:cLine
cSeparador := space( 2 )
aStr := StringToArray( cCadena1, cSeparador )

for i := 1 to len( aStr )
? aStr[i]
next

FUNCTION StringToArray( cString, cSeparator )
   LOCAL nPos
   LOCAL aString := {}
   DEFAULT cSeparator := ";"
   cString := ALLTRIM( cString ) + cSeparator
   DO WHILE .T.
      nPos := AT( cSeparator, cString )
      IF nPos = 0
         EXIT
      ENDIF
      AADD( aString, SUBSTR( cString, 1, nPos-1 ) )
      cString := SUBSTR( cString, nPos+1 )
   ENDDO
RETURN ( aString )