Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Excel-Spalten formatieren

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
medmaster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 43
Registriert: Di, 29. Jan 2008 1:43

Excel-Spalten formatieren

Beitrag von medmaster » Mi, 26. Okt 2016 23:36

Hallo .... :-)
ich habe mal versucht, eine Excelspalte "Geburtsdatum" in Xbase++ umzuformatieren :
Spalteninhalt : 15-Feb-51
So sieht der Makro-VBA-Code aus :

Code: Alles auswählen

    Columns("C:C").Select
    Selection.NumberFormat = "d/m/yyyy;@"
.........
So sah mein Xbase++.Code aus ... leider funkts so nicht - hat das jemand schon probiert ?

Code: Alles auswählen

   			obook  := oExcel:Workbooks:Open(cWahl)
   			oSheet := oBook:activesheet
			oExcel:Columns("C:C"):Select
		       oExcel:Selection:NumberFormat="d/m/yyyy;@"
In der resultierenden .CSV steht dann nur ;d/m/yyyy;
Hat jemand eine Idee ???
Gruß Rainer

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag von brandelh » Do, 27. Okt 2016 8:27

Statt:

Code: Alles auswählen

 oExcel:Columns("C:C"):Select
denke ich müsste es das Sheetobjekt sein:

Code: Alles auswählen

oRange :=  oSheet:Columns("C:C")
oRange:NumberFormat := "d/m/yyyy;@"
aber sicherheitshalber werde ich mal auf der Festplatte suchen ...

Code: Alles auswählen

oSheet:Rows(1):Font:Bold := .t. 
oSheet:Columns("A:ZZ" ):AutoFit() // automatische Breite
oSheet:Columns("A:N"  ):HorizontalAlignment =  xlCenter 
oSheet:Columns("O"    ):HorizontalAlignment =  xlRight  


:Select() geht auch, ist wohl die Markierung für die Zwischenablage:

Code: Alles auswählen

aeval(aDateColumns, {|nCol| oSheet:Columns(nCol):NumberFormat := "TT.MM.JJJJ"})
aeval(aTextColumns, {|nCol| oSheet:Columns(nCol):NumberFormat := "@"})
oSheet:Cells(1,1):select()
oSheet:Paste()
oSheet:Cells(1,1):select()
oExcel:visible       := .T.
oSheet:Columns("A:ZZ"):AutoFit()
oSheet:Rows(1):Font:Bold := .t.
oExcel:visible       := .F.
Gruß
Hubert

Benutzeravatar
BJelinek
UDF-Programmierer
UDF-Programmierer
Beiträge: 72
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: Excel-Spalten formatieren

Beitrag von BJelinek » Do, 27. Okt 2016 20:58

Ich formatiere die Spalten immer bevor ich die Daten einlese.

Code: Alles auswählen

oSheet:Columns("C:C"):NumberFormat := "TT-MM-YYYY;@" // Datum
oSheet:Columns("G:G"):NumberFormat := "@" // text
oSheet:Columns( "H:H" ):NumberFormat := "#.##0,00" // numerisch
oSheet:Columns("I:I"):ColumnWidth   := 55.00
oSheet:Columns( "J:K" ):NumberFormat := "#.##0,00" // numerisch
Gruß
Bernd

medmaster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 43
Registriert: Di, 29. Jan 2008 1:43

Re: Excel-Spalten formatieren

Beitrag von medmaster » Sa, 29. Okt 2016 23:30

..danke - geht so prima !! Zu den möglichen Parametern bei Zellformatierung und anderen
Funktionen bei VBA Excel find ich nichts - gibts da irgendwas an Übersicht ?
Zum Beispiel : in welcher Form les ich die Spaltenüberschriften aus, wie sieht das
Ergebnis aus - Objekt ? Ein Ergebnis-Array wäre gut ...
Gruß
Rainer

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2282
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag von Wolfgang Ciriack » So, 30. Okt 2016 8:31

Also ich lese die Daten aus einer Exceldatei immer mit

Code: Alles auswählen

      oWorkBook := oExcel:workbooks:open(cDatei)
      aValues := oWorkBook:workSheets(1):usedRange:value
      l:=len(aValues)
aus. Sind Spaltenüberschriften vorhanden, so hast du die dann im Array aValues[1], in den folgenden die Spaltenwerte.
Viele Grüße
Wolfgang

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag von brandelh » So, 30. Okt 2016 21:02

Wolfgangs Methode alles zu lesen ist die schnellste, da ein Zugriff alles liefert,
aber du kannst natürlich auch einzelne Zellen lesen und setzen.

Am Besten in Excel ein Macro aufnehmen, die gewünschte Aktion machen und den VBA Quellcode ansehen.
Früher gab es für Excel etc. VBA Hilfen, die man nachinstallieren konnte - ob die bei den neuen Versionen dabei sind ?
Gruß
Hubert

medmaster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 43
Registriert: Di, 29. Jan 2008 1:43

Re: Excel-Spalten formatieren

Beitrag von medmaster » Mo, 31. Okt 2016 18:26

ich habe eine ganz gute Hilfe oder Übersicht gefunden - muss man eben online haben und dann entsprechend
das Passende suchen :
https://msdn.microsoft.com/de-de/library/ff194068.aspx
Danke für eure Hinweise ..
Rainer

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Excel-Spalten formatieren

Beitrag von brandelh » Di, 01. Nov 2016 12:32

Danke für den LINK :-)
Gruß
Hubert

Antworten