Seite 1 von 1

Umwandlung Excel Spalte A... in numerischen Wert ...

Verfasst: Mo, 02. Dez 2013 14:11
von brandelh
Hi,

ich überlege gerade wie man das am Besten macht. Nach den normalen Stellensystemen (Dezimal, Hexadezimal etc.) wäre die Formel etwa so:

(ASC(SUBSTR(sCol,x,1))-ASC("A")+1) * 27 ^ (x-1)

da es aber keine 0 gibt, ist der Überlauf von 26 (A) nach 27 (AA) nach obiger Formel auf 28 ...
Ich könnte ein Array mit Wertetabelle erstellen und dann mit aScan() die Position ermitteln, aber vielleicht erkennt ja jemand wie man die Formel umstellen muss ...

Oder hat jemand schon solche Umrechungsfunktionen ?

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Verfasst: Mo, 02. Dez 2013 14:31
von brandelh
na ja, es geht ja ratz fatz mit dieser Funktion ... 702 Spalten, das sollte genügen ;-)

Code: Alles auswählen

static aTable := NIL
   if aTable = NIL
      aTable := {}
      for y := 0 to 26
          for x := 1 to 26
              if y=0
                 aadd( aTable,chr(x+64) )
              else
                 aadd( aTable,chr(y+64)+chr(x+64) )
              endif
          next
      next
   endif

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Verfasst: Di, 03. Dez 2013 3:36
von AUGE_OHR
brandelh hat geschrieben:ich überlege gerade wie man das am Besten macht. Nach den normalen Stellensystemen (Dezimal, Hexadezimal etc.) wäre die Formel etwa so:

(ASC(SUBSTR(sCol,x,1))-ASC("A")+1) * 27 ^ (x-1)

Oder hat jemand schon solche Umrechungsfunktionen ?
ich verwende das

Code: Alles auswählen


   cEnde := ZAHL2CHR(nLFcount)
   oSheet:range( "A1:"+cEnde+LTRIM( STR(nLen ) ) ):value  := aExcel


FUNCTION ZAHL2CHR(nLFcount)
LOCAL nMal
LOCAL cEnde

   IF nLFcount > 26
      nMal  := INT(nLFcount/26)
      IF nMal = nLFcount/26              // geändert
         cEnde := CHR(nMal+64-1) + "Z"  // geändert
      ELSE
         cEnde := CHR(nMal+64)+CHR((nLFcount-(nMal*26))+64)
      ENDIF
   ELSE
      cEnde := CHR(nLFcount+64)
   ENDIF

RETURN cEnde
geändert : bis 702 -> ZZ

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Verfasst: Di, 03. Dez 2013 8:22
von brandelh
in der LibXL gibt es doch tatsächlich auch eingebaute Umrechnungsfunktionen, also brauche ich auf Xbase++ gar keine :-)

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Verfasst: Di, 03. Dez 2013 9:54
von Koverhage
Was ist LibXL ?

Re: Umwandlung Excel Spalte A... in numerischen Wert ...

Verfasst: Di, 03. Dez 2013 11:13
von brandelh
Eine DLL mit der man OHNE ActiveX bzw. installiertem Excel XLS oder XLSX Exceldokumente sehr schnell erzeugen kann.
Ich baue gerade Wrapper Code dafür.

http://www.libxl.com