Seite 1 von 1

XLS und XLSX direkt ohne Excel erzeugen ... libXL

Verfasst: Mi, 16. Okt 2013 10:52
von brandelh
Werner_Bayern hat geschrieben:Dazu kann ich eine Empfehlung abgeben:
http://www.libxl.com
Damit kann man Excel lesen und schreiben, ohne Excel! Und das sehr schnell! Setze es seit 1 Jahr in einem Tool ein, was früher 7-8 Stunden dauerte (Öffnen, Auslesen und Schreiben einer Ergebnisdatei von ca. 150 Excel-Dateien), dauert jetzt keine 30 Minuten.
Kann xls und xlsx.
Und der Support ist gut und schnell.
das muss ich in einem eigenen Thema aufgreifen ...

hast du Codebeispiele wie du die DLL ansprichst ?
Reicht Xbase pur, oder besser ot4xb ?

Re: XLS und XLSX direkt ohne Excel erzeugen ... libXL

Verfasst: Do, 17. Okt 2013 15:42
von brandelh
In der HTML Hilfe habe ich DOUBLE als Parameter gelesen, also muss man mit der OT4XB arbeiten (eventuell mit BAB, aber die OT4XB ist besser).
Und da sind noch andere Parameter, Pointer erkenne ich am * nach char etc., aber was sind ** wie hier:

Code: Alles auswählen

xlBookLoadRawA(BookHandle handle, const char* data, unsigned size);    
xlBookSaveRawA(BookHandle handle, const char** data, unsigned* size);  
vermutlich habe ich das sogar schon mal nachgefragt, aber "**" als Suchbegriff geht nicht :wink:

Re: XLS und XLSX direkt ohne Excel erzeugen ... libXL

Verfasst: Do, 17. Okt 2013 16:04
von Martin Altmann
Ich würde mal sagen: Pointer of Pointer! Muss also doppelt dereferenziert werden :!:

Re: XLS und XLSX direkt ohne Excel erzeugen ... libXL

Verfasst: Do, 17. Okt 2013 16:18
von Koverhage
Von: http://www.peace-software.de/ckurs12.html
5. Pointer auf Pointer

Um die Sache zu verkomplizieren, kann man sich auch Pointer deklarieren, welche auf einen anderen Pointer zeigen, wird z.B. häufig angewendet, wenn man eine Anwendung mit eigenem memory managment schreibt. Kurz nebenbei erklärt, man benutzt einen Pointer, der auf die Daten zeigt, werden die Daten im Speicher verschoben, wird dieser Pointer aktualisiert. Dann deklariert man sich einen Masterpointer, welcher auf diesen Datenpointer zeigt. Der Masterpointer verändert sich nicht, er zeigt immer nur auf den anderen Pointer, man kann ihn zu jeder Zeit an alle Funktionen übergeben. Um an die Daten zu kommen, muß man ihn nur zweimal dereferenzieren.

Man deklariert einen Pointer auf einen Pointer mit zwei Sternchen '**' , hier mal ein Beispiel:

int x = 42;
int *myptr, **masterptr;

myptr = &x; // myptr zeigt auf x
masterptr = &myptr; // masterptr zeigt auf myptr
printf("**masterptr: %d\n", **masterptr); // masterptr wird zweimal dereferenziert

Re: XLS und XLSX direkt ohne Excel erzeugen ... libXL

Verfasst: Do, 05. Dez 2013 23:52
von Werner_Bayern
Servus Hubert,

hab das jetzt erst zufällig gelesen. Die Beispiele hast Du ja vor einigen Wochen alle von mir per Mail bekommen. :)

Re: XLS und XLSX direkt ohne Excel erzeugen ... libXL

Verfasst: Fr, 06. Dez 2013 8:43
von brandelh
Danke für die Beispiele, die haben mir den Einstieg erleichtert ... ich hatte Anfangs Schwierigkeiten, da in der onlinehilfe C++ eingestellt war ... wir brauchen aber C Syntax für die DLL ;-)
Mittlerweile habe ich die Beschreibung aus beiden gemischt (Datentypen von C++ sind besser), Pablo bei den ** gefragt und meinen code generator damit gefüttert.

Das Resultat habe ich als 1.00 veröffentlicht (die 1.01 bereinigt die ersten gefundenen Fehler ;-) )