Seite 1 von 1

Excel Column Informationen ?

Verfasst: So, 05. Jan 2020 8:58
von AUGE_OHR
hi,


ein Excel Sheet in ein Array zu übernehmen ist einfach aber wie bekomme ich Information über den Type, Len einer Excel Column :?:

Re: Excel Column Informationen ?

Verfasst: So, 05. Jan 2020 11:06
von Tom
Sind das nicht eher Zelleneigenschaften?

Re: Excel Column Informationen ?

Verfasst: So, 05. Jan 2020 12:09
von brandelh
Mit einer Methode vom Sheet kann man eine Column(x) gekommen, dort sind die Spaltenbreite und evtl. auch eine Standardformatierung der Spalte hinterlegt.
Ansonsten muss man wohl alle Zellen angehen, entweder unter sheet oder unter selection

Re: Excel Column Informationen ?

Verfasst: So, 05. Jan 2020 23:13
von AUGE_OHR
hi,

Danke für eure Antworten, ich werde mal suchen gehen.

wegen der Breite einer Spalte : gab es nicht einen Befehl um alle bei allen Spalten die "optimale" Breite einzustellen :?:

Re: Excel Column Informationen ?

Verfasst: Mo, 06. Jan 2020 7:52
von Wolfgang Ciriack
Ich glaube, es geht für die Spalten nur einzeln mit z.B.
oWorkSheet:Columns(2):AutoFit()

Re: Excel Column Informationen ?

Verfasst: Mo, 06. Jan 2020 8:04
von georg
Guten Morgen,


man kann auch Gruppen von Spalte "autofitten":

Code: Alles auswählen

oSheet:Columns("A:E"):autoFit()

Re: Excel Column Informationen ?

Verfasst: Di, 07. Jan 2020 9:00
von brandelh
Ja, so wie Georg es geschrieben hat mache ich das auch, wenn die Spalten nicht direkt nebeneinander liegen muss man aber jeweils einen Aufruf (eine Spalte oder Spalten Gruppe) setzen.

Re: Excel Column Informationen ?

Verfasst: Di, 07. Jan 2020 16:14
von AUGE_OHR
hi,

hab jetzt 2 Informationen bekommen

Code: Alles auswählen

   FOR i := 1 TO numColumns
      AADD( aWide, oSheet:Columns( i ) :ColumnWidth )
      AADD( aFormat, oSheet:Columns( i ):NumberFormat )
   NEXT
Excel_Info1.JPG
Excel_Info1.JPG (47.54 KiB) 10770 mal betrachtet
die o:ColumnWidth muss man wohl noch "umrechnen" (Twips ?)
bei o:NumberFormat nehme ich an das "Standard" Type "C" ist und #0,00 Type "N" mit 2 Dezimalstellen

aber was ist @ für ein Format und was macht man mit NIL :?:

Re: Excel Column Informationen ?

Verfasst: Mi, 08. Jan 2020 7:43
von Koverhage
@ = alphanumerisch

Re: Excel Column Informationen ?

Verfasst: Mi, 08. Jan 2020 8:22
von brandelh
Innerhalb von Excel bedeutet "Standard", dass Excel selbst den Typ je nach Inhalt wählt

Re: Excel Column Informationen ?

Verfasst: Mi, 08. Jan 2020 12:34
von AUGE_OHR
hi,

wenn die User o:NumberFormat "richtig" verwenden würden ...

Code: Alles auswählen

   CASE ccType = "@"     .AND. cType = "C"
   CASE ccType = "@"
   CASE ccType = "0,00"  .AND. cType = "C" .AND. VAL(STRTRAN(cValue,'"','')  ) > 0
   CASE ccType = "0"     .AND. cType = "C"
   CASE ccType = "#0,00"
   CASE ccType = "#0.00"
   CASE ccType = "#0"
   CASE ccType = NIL     .AND. cType = "N"  // NIL beachten !            
   CASE ccType = "TT.MM.JJJJ" .AND. cType = "D"
   CASE ccType = "TT.MM.JJJJ"
   CASE ccType = "Standard"
das sind so die Formate die ich bislang gefunden habe wobei NIL bei VALTYPE() = "N" sehr oft vorkommt :!:
vielleicht ist es nur in der Deutschen Version so denn es geht um "." und "," wo Excel in verschiedenen Sprachen damit arbeitet.

---

wie schon gesagt geht es darum User Excel Sheet zu "lesen" wobei User Excel z.b. zum schreiben einer Rechnung nutzen :roll:
da stehen in den ersten ROW dann die Adresse des Kunden etc. und in der letzten das Impressum und die "Daten" dazwischen. #-o

und davon hat er nun tausende ...

wenn man das auf "einen" Type dann festmachen könnte ... aber nein dann gibt es auch Listen die alle "verschieden" sind.
nicht zu vergessen die Excel Tabellen die er von den Lieferanten bekommt ...

es ist mir unbegreiflich wie man "so" ohne eine Datenbank arbeiten kann ... naja jetzt bekommt er was "Ordentliches" zum verwalten seiner Daten.

Re: Excel Column Informationen ?

Verfasst: Mi, 08. Jan 2020 14:11
von Wolfgang Ciriack
Dann vergiss nicht, die Rechnungseinzelpositionen mit der Gesamtsumme abzugleichen, oft sind bei selbsterstellten Rechnungen in Word oder Excel auch noch Rechenfehler vorhanden :D

Re: Excel Column Informationen ?

Verfasst: Sa, 11. Jan 2020 8:24
von AUGE_OHR
hi,

so hier nun meine App die, Excel vorrausgesetzt, alle *.XLSx die ich finden konnte "irgendwie" in eine DBF überträgt.
dabei ging es vor allem um "komische" Sachen die ein User mit Excel anstellen "könnte" und deshalb dieses Layout
Excel_Demo5.JPG
Excel_Demo5.JPG (54.83 KiB) 10608 mal betrachtet
ein Excel Sheet in ein Array zu "lesen" ist einfach, es aufzubereiten für ein Listview ( Browse ) auch schnell gemacht aber dann ...

ein "Array" nimmt ja alle möglichen Daten Typen an und es "nur" mit VALTYPE() zu ermitteln war mir nicht genug
also hole ich mir auch das oExcel:NunberFormat und zeige es im Header in Farbe (Grün/Rot) an. hier käme F9 in Spiel.

F5 ist default 1 was bei diesem Array stimmt genau so wie F6 = 2 wo die Daten anfangen.
F7 wäre wenn am Ende was kommt was nicht mehr zu den Daten gehört und F8 für den Bereich rechts.

bis auf F8 muss man zunächst durch click oder F-Taste die Aktion "auswählen" zu dem den nachfolgende DblClick in der Tabellen gehören soll.

die F9 Taste steht default auf 2 was die erste Data Row wäre. nun steht da in Rot "NIL"

nun würde mir VALTYPE() für das erste Element der Column 1 Type "N" geben ... weiter unter sieht man das auch Buchstaben vorkommen.
die beiden "NIL" Spalten würden mit VALTYPE() = "N" ja richtig sein aber wenn ich mit VAR2CHAR() die Länge und Dezimal Stellen ermitteln will wäre die "Probe" falsch.

wenn alles OK ist kommt man mit F4 zur nächsten Maske
Excel_Demo4.jpg
Excel_Demo4.jpg (82.38 KiB) 10608 mal betrachtet
hier kann man nun noch mal die Struktur editieren.

wenn alles klappt sollte danach der transfer klappen ... oder es kommt ein Error Log
hb_EXCEL_Demo1.ZIP
benötigt EXCEL
kein VIRUS sondern UPX
keine Runtime notwendig
(10.29 KiB) 334-mal heruntergeladen

Re: Excel Column Informationen ?

Verfasst: So, 12. Jan 2020 10:34
von AUGE_OHR
uuuuuups ...

das war der Source Code und nicht das EXE File #-o
na ja es ging ja um die Excel Column Informationen und "der" Code Teil läuft auch unter Xbase++ wenn man den "win_ole" Teil löscht

Code: Alles auswählen

win_oleCreateObject() -> CreateObject()
der wesentliche Teil ist hier

Code: Alles auswählen

      // fit all Column to optimal size
      //  oSheet:EntireColumn:AutoFit()
      oSheet:Columns( "A:" + cEnde ) :autoFit()

      // transfer to Array
      aExcel := oSheet:range( "A1:" + cEnde + LTRIM( STR( numRows ) ) ) :value

      // get o:ColumnWidth and o:NumberFormat
      FOR i := 1 TO numColumns
         AADD( aWide, oSheet:Columns( i ) :ColumnWidth )
         AADD( aFormat, oSheet:Columns( i ) :NumberFormat )
      NEXT
damit bekomme ich nun die gewünschten Informationen.

hier nun das Lauffähige EXE (benötigt Excel)
hb_EXCEL_EXE_1.ZIP
mit UPX gepackt
kein Virus !
(1.27 MiB) 356-mal heruntergeladen