Archivo plano de Clipper a Excel

Archivo plano de Clipper a Excel

Postby Cgallegoa » Wed Feb 08, 2012 10:55 pm

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
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Archivo plano de Clipper a Excel

Postby Mauricio » Thu Feb 09, 2012 12:23 am

Carlos,

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

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


Saludos,
Mauricio
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Re: Archivo plano de Clipper a Excel

Postby hmpaquito » Thu Feb 09, 2012 8:19 am

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Archivo plano de Clipper a Excel

Postby Pedro » Thu Feb 09, 2012 9:08 am

Hola Carlos

Y no podrías hacerlo por el tamaño de los campos?.
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
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Archivo plano de Clipper a Excel

Postby Cgallegoa » Thu Feb 09, 2012 2:58 pm

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 cuántos caracteres 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
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Archivo plano de Clipper a Excel

Postby hmpaquito » Thu Feb 09, 2012 3:15 pm

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Archivo plano de Clipper a Excel

Postby Cgallegoa » Thu Feb 09, 2012 5:11 pm

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
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 494
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Archivo plano de Clipper a Excel

Postby sysctrl2 » Thu Feb 09, 2012 7:30 pm

saludos .

Code: Select all  Expand view  RUN
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 )
 
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1022
Joined: Mon Feb 05, 2007 7:15 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 52 guests