Daten als Excel File ausgeben

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Daten als Excel File ausgeben

Beitrag von Wolfgang_B »

Hi,

bin mir zwar sicher, daß irgendwo hier Forum das schon umfangreich beschreiben ist, finde es aber leider nicht...

Ich möchte eine Selektion von Daten im Excel Format ausgeben. Kann mir da jemand einen Tipp geben?!

Vielen Dank und Gruß
Wolfgang
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von brandelh »

Hi,

da kenne ich 4 Möglichkeiten ...

1. Du hast Excel zur Verfügung -> ActiveX
-> suche mit diesem Suchbegriff EXCEL* DBF* EXPORT*
die * hinter (oder auch vor) dem Suchbegriff sind wichtig, wenn das Wort nicht einzeln steht.
der 2. gezeigte Beitrag zeigt wie es sehr schnell geht ;-)

2. Du könntest auch Open Office Org installieren und dort mit ActiveX
arbeiten. Einer aus dem Forum hat auch darüber geschrieben ...
suchen mit der Such-Funktion ;-)

3. Man könnte auch etwas mogeln ;-)
Excel kann in den neueren Versionen HTML Tabellen wie XLS Dateien
behandeln. Solange diese nur eine Tabelle brauchen, sieht man
auch keinen Unterschied -> HTML Tabelle erzeugen und mit
Endung XLS speichern. Excel wird diese wie eine XLS anzeigen ...
Näheres dazu sicher mit Suchbegriff: EXCEL* XLS* HTML* ;-)

4. Wenn das alles nicht geht, bleibt nur die Erstellung einer CSV Datei,
diese kann zwar nur den einfachen Inhalt (Zelle für Zelle) vorgeben, aber besser als nichts.

Von einer Bibliothek mit der man Excel Dateien direkt erstellen kann, habe ich noch nichts
gehört, bei der Komplexität des Formates ...
Gruß
Hubert
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Daten als Excel File ausgeben

Beitrag von Wolfgang_B »

Hallo Hubert,

war ja fast realtime!!! Vorschlag 3 und 4 klingt ganz sympathisch. Werde mich da mal damit befassen.

Vielen Dank und Gruß

Wolfgang
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
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: Daten als Excel File ausgeben

Beitrag von Tom »

5. Einige Reportgeneratoren sind dazu in der Lage, Reports als Excel-Dateien zu speichern - da erschlägt man zwei Fliegen mit einer Klatsche, und der Benutzer kann (über den Reportdesigner) sogar auswählen, welche Daten wie exportiert werden sollen.

6. Man kauft Roger Donnays eXpress++, das über Funktionen wie "DC_Array2Excel" und "DC_Db2Excel" verfügt. Auch hier zwei Fliegen: Es ist eine der besten Zusatzbibliotheken zu Xbase++ überhaupt.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von brandelh »

Tom hat geschrieben: 6. Man kauft Roger Donnays eXpress++, das über Funktionen wie "DC_Array2Excel" und "DC_Db2Excel" verfügt. Auch hier zwei Fliegen: Es ist eine der besten Zusatzbibliotheken zu Xbase++ überhaupt.
nutzt Roger hier ActiveX oder erzeugt er direkt native XLS Dateien ?
Gruß
Hubert
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: Daten als Excel File ausgeben

Beitrag von Tom »

Muss ich mal prüfen.
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: Daten als Excel File ausgeben

Beitrag von Wolfgang Ciriack »

Hallo Hubert,
du hast Möglichkeit 5 vergessen:

Du schreibst alles in eine DBF, speicherst Sie als .XLS Datei ab und öffnest sie einfach mit Excel. :)
Wieß nur nicht, ob das auch noch mit Excel 2007 funktioniert.
Viele Grüße
Wolfgang
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: Daten als Excel File ausgeben

Beitrag von Tom »

@Hubert: Roger benutzt Excel per Active X.
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Martin Altmann »

Hallo Tom,
gut zu wissen - das kann durchaus "unschön" sein, da man ja dann zusätzlich eine Office-Lizenz und -Installation braucht, um mit Xbase++ und Hilfe von eXpress++ XLS-Dateien zu erstellen...
Auf einem normalen Office-PC sicherlich incht wirklich ein KO-Kriterium - aber u.U. auf einem "einfachen" Webserver, der die Dateien erstellen und mailen soll...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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: Daten als Excel File ausgeben

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: gut zu wissen - das kann durchaus "unschön" sein, da man ja dann zusätzlich eine Office-Lizenz und -Installation braucht, um mit Xbase++ und Hilfe von eXpress++ XLS-Dateien zu erstellen...
deshalb finde ich die HTML Methode genial und wenn man kein Office hat das sollte man mal
einfach google´n was es so an HTML -> Excel XLS "Konvertern" gibt ...

über activeX eine Excel Tabelle zu erstellen kann je nach Datenmenge ziemlich dauern wenn
man die "Zeile für Zeile" anlegt. Wenn man jedoch vorher die RANGE festlegt geht es deutlich
schneller ...
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Koverhage »

Hi Jimmy,

kannst Du ein Beispiel geben?

z.B. eine Sammelrechnung als Excel Tabelle

bisher:
do while !eof()
oSheet:Cells(nRow,1):value := Rechnungsnummer
oSheet:Cells(nRow,2):value := Rechnungsbetrag netto
oSheet:Cells(nRow,3):value := Rechnungsbetrag Brutto
skip 1
enddo

wie läuft das dann mit Range ?
Gruß
Klaus
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: Daten als Excel File ausgeben

Beitrag von AUGE_OHR »

hi,
Koverhage hat geschrieben: wie läuft das dann mit Range ?
du musst alle Cell die du füllen willst "vorweg" in die RANGE nehmen

Code: Alles auswählen

  oSheet:range( "B6:B" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
  oSheet:range( "C6:C" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "TT.MM.JJ"
  oSheet:range( "D6:D" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
  oSheet:range( "E6:E" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
  oSheet:range( "F6:F" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "TT.MM.JJ"

  DO WHILE ( UMSATZ->UKDNR = cKDNR ) .AND. .NOT. EOF()
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Martin Altmann »

Moin Jimmy,
AUGE_OHR hat geschrieben:

Code: Alles auswählen

  oSheet:range( "B6:B" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
  oSheet:range( "C6:C" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "TT.MM.JJ"
  oSheet:range( "D6:D" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
  oSheet:range( "E6:E" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "#0,00"
  oSheet:range( "F6:F" + LTRIM( STR( 6 + nTreff ) ) ) :NumberFormat := "TT.MM.JJ"

  DO WHILE ( UMSATZ->UKDNR = cKDNR ) .AND. .NOT. EOF()
der letzte Teil, den Du nur angerissen hast, geht wesentlich schneller (habe es nicht selber gemacht, nur in der Alaska-Newsgroup gelesen)!
Du nimmst Deine Daten in ein Array - dann weisst Du ja, wie groß der Bereich ist (z.B. drei Spalten und 95 Zeilen). Die markierst Du (wie oben) und weißt dem Range einfach Dein Array zu.
Wahrscheinlich musst Du dann dazu das Value-Attribut nehmen - müßte ich mal wieder in der Newsgroup stöbern...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Martin Altmann »

Martin Altmann hat geschrieben:Wahrscheinlich musst Du dann dazu das Value-Attribut nehmen - müßte ich mal wieder in der Newsgroup stöbern...
Yup:

Code: Alles auswählen

oExcel:Range( "A1:A1000" ):value := aData
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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: Daten als Excel File ausgeben

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: Yup:

Code: Alles auswählen

oExcel:Range( "A1:A1000" ):value := aData
ja,
ich setze zuerst die Attribute.
das "füllen" von aData kommt dann in der DO WHILE
um es danach in einem Rutsch zu füllen.

es geht im Prinzip nur darum den Bereich per :RANGE "vorzubereiten"
statt es Zeilenweise zu machen.
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Martin Altmann »

Hallo Jimmy,
OK, dann hatte ich Deinen Ansatz falsch interpretiert - ich dachte, Du wolltest in der Schleife die Zellen einzeln belegen :D

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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: Daten als Excel File ausgeben

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: OK, dann hatte ich Deinen Ansatz falsch interpretiert - ich dachte, Du wolltest in der Schleife die Zellen einzeln belegen :D
ok ich war nicht ausführlich genug :)

Code: Alles auswählen

oExcel:Range( "A1:A1000" ):value := aData
damit markiert man ja eine Spalte (erste ganz links)

als ich das nun mit meinem Array füllen wollte

Code: Alles auswählen

AADD(aData, {UMSATZ->URECHNR   ,;
             UMSATZ->UMSATZGES ,;
             SUBSTR( UMSATZ->URECHDAT, 1, 2 ) + "." + ;
             SUBSTR( UMSATZ->URECHDAT, 3, 2 ) + "." + ;
             SUBSTR( UMSATZ->URECHDAT, 5, 2 ),;
             UMSATZ->UBEZAHLT         ,;
             UMSATZ->USTAND           ,;
             DTOC( UMSATZ->UBEZADAT ) })

oSheet:range( "A6:F" + LTRIM( STR( 6 + nTreff ) ) ) :value := aData
hat es, je nach Excel Version, geknallt ... es lag an meiner Art des Datum.
Also war es notwendig vorher das :NumberFormat für jede Columne zu
setzten, dann versteht mich auch Excel :)

... ich muss noch ausführlicher sein :
um eine Anzahl von Treffern festzustellen lege ich einen "Dummy" Index an.

Code: Alles auswählen

STATIC nTreff := 0
PROCEDURE MAIN
LOCAL zPath := "E:\ALASKA\XPPYIU\DATEN\"
   SELECT 1
   USE (zPath+"UMSATZ.DBF") EXCLUSIV
   DbCreateIndex("UPLZ", "UPLZ", {|| Treffer() }, .T. )
   ? nTreff
   WAIT
RETURN

FUNCTION Treffer()
   IF VAL(UMSATZ->UPLZ) >= 20000 .AND. VAL(UMSATZ->UPLZ) <= 30000
      nTreff++
   ENDIF
   //
   // Länge / Type muss stimmen !
   //
RETURN STRZERO(nTreff,5)
so ich hoffe das war nun ausführlich genug
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Koverhage »

Hi Jimmy,

ausführlich genug, danke, werde es morgen gleich ausprobieren.
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Daten als Excel File ausgeben

Beitrag von Koverhage »

Habe das heute mal ausprobieren können, die Geschwindigkeit ist echt der Hammer. Über 600 Datensätze (als Arry angelegt)
einmal blinken und alles ist da.
Super.
Danke
Gruß
Klaus
Antworten