Excel Column Informationen ?
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Excel Column Informationen ?
hi,
ein Excel Sheet in ein Array zu übernehmen ist einfach aber wie bekomme ich Information über den Type, Len einer Excel Column
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
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Column Informationen ?
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
Ansonsten muss man wohl alle Zellen angehen, entweder unter sheet oder unter selection
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Column Informationen ?
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
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
Jimmy
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2941
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Column Informationen ?
Ich glaube, es geht für die Spalten nur einzeln mit z.B.
oWorkSheet:Columns(2):AutoFit()
oWorkSheet:Columns(2):AutoFit()
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Excel Column Informationen ?
Guten Morgen,
man kann auch Gruppen von Spalte "autofitten":
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Column Informationen ?
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
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Column Informationen ?
hi,
hab jetzt 2 Informationen bekommen
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
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
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
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Column Informationen ?
Innerhalb von Excel bedeutet "Standard", dass Excel selbst den Typ je nach Inhalt wählt
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Column Informationen ?
hi,
wenn die User o:NumberFormat "richtig" verwenden würden ...
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
da stehen in den ersten ROW dann die Adresse des Kunden etc. und in der letzten das Impressum und die "Daten" dazwischen.
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.
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"
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
da stehen in den ersten ROW dann die Adresse des Kunden etc. und in der letzten das Impressum und die "Daten" dazwischen.
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
Jimmy
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2941
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Excel Column Informationen ?
Dann vergiss nicht, die Rechnungseinzelpositionen mit der Gesamtsumme abzugleichen, oft sind bei selbsterstellten Rechnungen in Word oder Excel auch noch Rechenfehler vorhanden
Viele Grüße
Wolfgang
Wolfgang
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Column Informationen ?
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 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 hier kann man nun noch mal die Struktur editieren.
wenn alles klappt sollte danach der transfer klappen ... oder es kommt ein Error Log
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 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 hier kann man nun noch mal die Struktur editieren.
wenn alles klappt sollte danach der transfer klappen ... oder es kommt ein Error Log
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Excel Column Informationen ?
uuuuuups ...
das war der Source Code und nicht das EXE File
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
der wesentliche Teil ist hier
damit bekomme ich nun die gewünschten Informationen.
hier nun das Lauffähige EXE (benötigt Excel)
das war der Source Code und nicht das EXE File
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()
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
hier nun das Lauffähige EXE (benötigt Excel)
gruss by OHR
Jimmy
Jimmy