Array in Excel anzeigen

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

Moderator: Moderatoren

Antworten
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Array in Excel anzeigen

Beitrag von peternmb »

Hallo,

ich habe ein kleines 3-dim-Array, in dem jeweils ein Datum, der Betreff und der Betrag stehen.
Wie kann ich das ohne den Umweg über eine temporäre DBF zu gehen einfach in Excel ausgeben lasssen?
So in der Art, nur statt DBF das Array:

Code: Alles auswählen

xls_datei:=XbpFileDialog():new():create():saveas(Hauptpfad+"\Export\Kasse.xls")
oExcel := CreateObject("Excel.Application")
oExcel:DisplayAlerts := .F.
oExcel:visible       := .F.
oBook  := oExcel:workbooks:Open(Hauptpfad+"\Daten\tmp.dbf")
oBook:SaveAs( xls_datei , xlWorkbookNormal )
Ich finde zwar in der Wissensdatenbank einige ähnliche Beiträge, aber nicht was mir wirklich hilft :(
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Array in Excel anzeigen

Beitrag von Tom »

Dreidimensional ist wirklich schwierig, denn Tabellen sind nun einmal zweidimensional. Für die dritte Dimension müsstest Du dann weitere Arbeitsmappen anlegen. Viel Spaß dabei! 8)

Wie auch immer. Das geht per ActiveX, ist aber nicht trivial - ich kann meinen Code leider nicht posten, da er überwiegend nicht von mir ist. <hüstel>

Eine simplere Lösung besteht darin, die Tabelle - mit Headern - an die Zwischenablage zu übergeben, Excel per AX zu starten und zum Einfügen aus der Zwischenablage zu zwingen. Wenn man das "hidden" macht, kann man die entstandene Datei speichern und Excel gleich wieder beenden. Wichtig: Alle Daten in Anführungszeichen, mit Tab trennen und Zeilen mit CR/LF abschließen. Ist nicht wirklich elegant (und schwer zu kontrollieren), sollte aber funktionieren - zweidimensional. Ansonsten ist der Weg über eine temporäre DBF eigentlich okay, wenn man diese beispielsweise im Temp-Verzeichnis ablegt und nach der Operation löscht. Alternativ kann man auch eines der vielen sonstigen Importformate nutzen, die Excel unterstützt, etwa separierte Textdateien oder ähnliches.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Array in Excel anzeigen

Beitrag von Wolfgang Ciriack »

Vielleicht denke ich ja zu einfach...

Warum nicht die Daten in ein neues aMyArray und dann in einem Rutsch nach Excel mit

Code: Alles auswählen

SetExcelValue("A1:"+"C:"+ntrim(len(aMyArray)),oWorkSheet,aMyArray)

*********************************************************************
static FUNCTION SetExcelValue(cRange,oWorkSheet,xValue)
LOCAL oRange
oRange := oWorkSheet:Range(cRange)
oRange:Select()
oRange:Value := xValue
oRange:Font:Name:="Arial"
oRange:Font:Size:=8
oRange := nil
RETURN nil
Viele Grüße
Wolfgang
Paul Brem
Rookie
Rookie
Beiträge: 18
Registriert: Di, 11. Apr 2006 8:30
Wohnort: CH-8707 Uetikon

Re: Array in Excel anzeigen

Beitrag von Paul Brem »

Meinst Du wirklich einen 3-dimensionaler Array? So wie Du ihn beschrieben hast ist es ein 2-dimensionaler Array mit 3 Spalten und diesen kann man einfach in das Excel übergeben.

Bei einem 3-dimensionaler Array muss man aus der 3. Dimension Arbeitsblätter bilden. Die kann man mit dem Befehl oBook:workSheets:Add() anfügen.

Paul
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Array in Excel anzeigen

Beitrag von Markus Walter »

Hi,

ich vermute, dass Peter "3 Spalten" mit "dreidimensional" verwechselt, oder?
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Array in Excel anzeigen

Beitrag von peternmb »

Markus Walter hat geschrieben:Hi,

ich vermute, dass Peter "3 Spalten" mit "dreidimensional" verwechselt, oder?
JA, 2-dimensional mit 3 Spalten :color:
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Array in Excel anzeigen

Beitrag von brandelh »

Tom hat geschrieben:Dreidimensional ist wirklich schwierig, denn Tabellen sind nun einmal zweidimensional. Für die dritte Dimension müsstest Du dann weitere Arbeitsmappen anlegen. Viel Spaß dabei! 8)
was soll schwierig daran sein neue Arbeitsblätter in der Arbeitsmappe anzulegen ?
Im Büro habe ich da ein Beispiel, wenn es also bis dann noch nicht gelöst ist, einfach nochmal fragen ...
diesen Thread werde ich sonst nach meinem Urlaub sicher vergessen haben 8)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Array in Excel anzeigen

Beitrag von AUGE_OHR »

peternmb hat geschrieben:JA, 2-dimensional mit 3 Spalten :color:
du musst nur zwischen o:Sheets( Nummer ) "umschalten"

Code: Alles auswählen

   oExcel:= CreateObject( "Excel.Application" ) 
   oWorkBooks    := oExcel:Workbooks
   oBook         := oWorkbooks:Open( cPath + 'MyTable.xls'  )
   oWorkSheet1   := oBook:Sheets( 1 )
   oWorkSheet2   := oBook:Sheets( 2 )
gruss by OHR
Jimmy
Antworten