Excel Column Informationen ?

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12340
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 1 Mal

Excel Column Informationen ?

Beitrag von AUGE_OHR » So, 05. Jan 2020 8:58

hi,


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

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8013
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Tom » So, 05. Jan 2020 11:06

Sind das nicht eher Zelleneigenschaften?
Herzlich,
Tom

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15133
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von brandelh » So, 05. Jan 2020 12:09

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
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12340
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 1 Mal

Re: Excel Column Informationen ?

Beitrag von AUGE_OHR » So, 05. Jan 2020 23:13

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 :?:
gruss by OHR
Jimmy

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2623
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Wolfgang Ciriack » Mo, 06. Jan 2020 7:52

Ich glaube, es geht für die Spalten nur einzeln mit z.B.
oWorkSheet:Columns(2):AutoFit()
Viele Grüße
Wolfgang

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2629
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 1 Mal

Re: Excel Column Informationen ?

Beitrag von georg » Mo, 06. Jan 2020 8:04

Guten Morgen,


man kann auch Gruppen von Spalte "autofitten":

Code: Alles auswählen

oSheet:Columns("A:E"):autoFit()
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15133
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von brandelh » Di, 07. Jan 2020 9:00

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.
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12340
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 1 Mal

Re: Excel Column Informationen ?

Beitrag von AUGE_OHR » Di, 07. Jan 2020 16:14

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) 2841 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 :?:
gruss by OHR
Jimmy

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2291
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Koverhage » Mi, 08. Jan 2020 7:43

@ = alphanumerisch
Gruß
Klaus

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15133
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von brandelh » Mi, 08. Jan 2020 8:22

Innerhalb von Excel bedeutet "Standard", dass Excel selbst den Typ je nach Inhalt wählt
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12340
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 1 Mal

Re: Excel Column Informationen ?

Beitrag von AUGE_OHR » Mi, 08. Jan 2020 12:34

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.
gruss by OHR
Jimmy

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2623
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Wolfgang Ciriack » Mi, 08. Jan 2020 14:11

Dann vergiss nicht, die Rechnungseinzelpositionen mit der Gesamtsumme abzugleichen, oft sind bei selbsterstellten Rechnungen in Word oder Excel auch noch Rechenfehler vorhanden :D
Viele Grüße
Wolfgang

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12340
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 1 Mal

Re: Excel Column Informationen ?

Beitrag von AUGE_OHR » Sa, 11. Jan 2020 8:24

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) 2663 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) 2663 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) 52-mal heruntergeladen
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12340
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 1 Mal

Re: Excel Column Informationen ?

Beitrag von AUGE_OHR » So, 12. Jan 2020 10:34

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) 47-mal heruntergeladen
gruss by OHR
Jimmy

Antworten