Excel Column Informationen ?

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Excel Column Informationen ?

Beitrag 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 :?:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 8266
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 11 Mal
Danksagung erhalten: 44 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Tom »

Sind das nicht eher Zelleneigenschaften?
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15325
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag 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
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Excel Column Informationen ?

Beitrag 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 :?:
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2661
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Wolfgang Ciriack »

Ich glaube, es geht für die Spalten nur einzeln mit z.B.
oWorkSheet:Columns(2):AutoFit()
Viele Grüße
Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2686
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 19 Mal
Danksagung erhalten: 1 Mal

Re: Excel Column Informationen ?

Beitrag von georg »

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
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15325
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag 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.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Excel Column Informationen ?

Beitrag 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) 4589 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: 2338
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 9 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von Koverhage »

@ = alphanumerisch
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15325
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 19 Mal
Danksagung erhalten: 8 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag von brandelh »

Innerhalb von Excel bedeutet "Standard", dass Excel selbst den Typ je nach Inhalt wählt
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Excel Column Informationen ?

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2661
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Excel Column Informationen ?

Beitrag 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
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Excel Column Informationen ?

Beitrag 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) 4411 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) 4411 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) 104-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12493
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Excel Column Informationen ?

Beitrag 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) 92-mal heruntergeladen
gruss by OHR
Jimmy
Antworten