FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour aporte: obtener la columna para exportar en excel a X distan
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
aporte: obtener la columna para exportar en excel a X distan
Posted: Thu May 10, 2012 12:47 PM
Hola.

Por el programa que estoy haciendo necesite resolver el problema de ubicar en la columna X un dato, luego incrementar dicha columna X
para el proximo dato y asi sucesivamente. Logré esto. Si hay una solución mas simple bienvenido sea:

Code (fw): Select all Collapse
#include "fivewin.ch"

//------------------------------------------------------------------------------

FUNCTION main()

   ? NuevoNumeroCelda("iv", 1)

   RETURN (NIL)

//------------------------------------------------------------------------------

FUNCTION LaUltima(cCeldaAux, nIncremento)
   LOCAL nItem,;
         cLetra,;
         lContiene:= .f.

   DEFAULT nIncremento:= 1

   FOR nItem := Len(cCeldaAux) TO 1 STEP -1
      IF (SubStr(cCeldaAux, nItem, 1) == "Z")
         cCeldaAux:= LaUltima(SubStr(cCeldaAux, 1, Len(cCeldaAux)-1))
         lContiene:= .T.
         EXIT
      ELSE
         cLetra:= chr(Asc(SubStr(cCeldaAux, Len(cCeldaAux), 1)) + nIncremento)
         cCeldaAux:=SubStr(cCeldaAux, 1, Len(cCeldaAux)-1) + cLetra
         EXIT
      ENDIF
   NEXT nItem

   IF lContiene
      cCeldaAux:= cCeldaAux + "A"
   ENDIF

   IF Len(cCeldaAux) > 2
      cCeldaAux:= NIL
   ENDIF

   RETURN (cCeldaAux)

//------------------------------------------------------------------------------

FUNCTION NuevoNumeroCelda(cCelda, nIncremento)
   cCelda:= LaUltima(Upper(cCelda), nIncremento)

   //Verifica que no sea la ultima columna soportada por excel

   IF (Asc(SubStr(ccelda,1,1)) > 72) .and. (Asc(SubStr(cCelda, 2,1)) > 86)
      cCelda:= NIL
   ENDIF

   RETURN (cCelda)

//------------------------------------------------------------------------------


La ultima columna del excel es la "IV" y no puede superar dicha columna, en ese caso de superar devuelve el valor NIL
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: aporte: obtener la columna para exportar en excel a X distan
Posted: Thu May 10, 2012 03:47 PM
Corrigo una parte del codigo:

function La Ultima queda asi:

Code (fw): Select all Collapse
FUNCTION LaUltima(cCeldaAux, nIncremento)
   LOCAL nItem,;
         cLetra,;
         lContiene:= .f.

   DEFAULT nIncremento:= 1

   FOR nItem := Len(cCeldaAux) TO 1 STEP -1
      IF (SubStr(cCeldaAux, nItem, 1) == "Z")
         cCeldaAux:= LaUltima(SubStr(cCeldaAux, 1, Len(cCeldaAux)-1))
         lContiene:= .T.
         EXIT
      ELSE
         cLetra:= chr(Asc(SubStr(cCeldaAux, Len(cCeldaAux), 1)) + nIncremento)
         cCeldaAux:=SubStr(cCeldaAux, 1, Len(cCeldaAux)-1) + cLetra
         EXIT
      ENDIF
   NEXT nItem

   IF lContiene

      // acregue las tres lineas siguientes.
      IF Empty(cCeldaAux)
         cCeldaAux:= "A"
      endif
      cCeldaAux:= cCeldaAux + "A"
   ENDIF

   IF Len(cCeldaAux) > 2
      cCeldaAux:= NIL
   ENDIF

   RETURN (cCeldaAux)
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/

Continue the discussion