Daten als Excel File ausgeben
Moderator: Moderatoren
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Daten als Excel File ausgeben
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
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
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
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 ...
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
Hubert
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- 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
Hallo Hubert,
war ja fast realtime!!! Vorschlag 3 und 4 klingt ganz sympathisch. Werde mich da mal damit befassen.
Vielen Dank und Gruß
Wolfgang
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
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
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.
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
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
nutzt Roger hier ActiveX oder erzeugt er direkt native XLS Dateien ?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.
Gruß
Hubert
Hubert
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- 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
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.
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
Wolfgang
- Martin Altmann
- Foren-Administrator
- Beiträge: 16544
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
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
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
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.
- 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: Daten als Excel File ausgeben
hi,
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 ...
deshalb finde ich die HTML Methode genial und wenn man kein Office hat das sollte man malMartin 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...
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
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
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 ?
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
Klaus
- 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: Daten als Excel File ausgeben
hi,
du musst alle Cell die du füllen willst "vorweg" in die RANGE nehmenKoverhage hat geschrieben: wie läuft das dann mit Range ?
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
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16544
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
Moin Jimmy,
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
der letzte Teil, den Du nur angerissen hast, geht wesentlich schneller (habe es nicht selber gemacht, nur in der Alaska-Newsgroup gelesen)!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()
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
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.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16544
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
Yup:Martin Altmann hat geschrieben:Wahrscheinlich musst Du dann dazu das Value-Attribut nehmen - müßte ich mal wieder in der Newsgroup stöbern...
Code: Alles auswählen
oExcel:Range( "A1:A1000" ):value := aData
Martin
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.
- 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: Daten als Excel File ausgeben
hi,
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.
ja,Martin Altmann hat geschrieben: Yup:Code: Alles auswählen
oExcel:Range( "A1:A1000" ):value := aData
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
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16544
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 114 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
Hallo Jimmy,
OK, dann hatte ich Deinen Ansatz falsch interpretiert - ich dachte, Du wolltest in der Schleife die Zellen einzeln belegen
Viele Grüße,
Martin
OK, dann hatte ich Deinen Ansatz falsch interpretiert - ich dachte, Du wolltest in der Schleife die Zellen einzeln belegen
Viele Grüße,
Martin
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.
- 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: Daten als Excel File ausgeben
hi,
damit markiert man ja eine Spalte (erste ganz links)
als ich das nun mit meinem Array füllen wollte
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.
so ich hoffe das war nun ausführlich genug
ok ich war nicht ausführlich genugMartin Altmann hat geschrieben: OK, dann hatte ich Deinen Ansatz falsch interpretiert - ich dachte, Du wolltest in der Schleife die Zellen einzeln belegen
Code: Alles auswählen
oExcel:Range( "A1:A1000" ):value := aData
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
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)
gruss by OHR
Jimmy
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
Hi Jimmy,
ausführlich genug, danke, werde es morgen gleich ausprobieren.
ausführlich genug, danke, werde es morgen gleich ausprobieren.
Gruß
Klaus
Klaus
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Daten als Excel File ausgeben
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
einmal blinken und alles ist da.
Super.
Danke
Gruß
Klaus
Klaus