Ich darf in der Firma aktuell bei der Implementierung einer neuen Funktion helfen. Die Funktion die dazu, Daten via COM in ein Excel-File zu exportieren. Eigentlich keine grosse Sache, wenn da nicht die Stolperfallen wären.
Neben vielen kleineren Besonderheit, die wir inzwischen erfolgreich gemeistert haben, existiert auch die Folgende:
Excel kann bis zu 32′768 Zeichen in eine Zelle schreiben – solange nur eine Zelle auf ein Mal angesprochen wird. WIrd ein Bereich von mehreren Excel-Zellen angesprochen, darf jede Zelle noch maximal 911 Zeichen enthalten – sind es mehr, bricht der Export mit einer Fehlermeldung ab.
Kein Problem, man kann jede Zelle einzeln ansprechen und beschreiben, dies dauert leider ungefähr 70x länger (von Delphi aus getestet).
Um nicht zu viel Geschwindigkeit zu verlieren, bleibt uns nichts anderes übrig, als diejenigen Daten in ein zweidimensionales Array zu schreiben, welche weniger als 911 Zeichen haben, und dieses Array Excel zu übergeben. Die restlichen Zellen, welche grössere Datensätze enthalten, müssen inklusive der gewünschten Position zwischengespeichert werden, und in einen zweiten Schritt Zelle für Zelle beschrieben werden. die bedeutet, dass unser Code für das Beschreiben des Zellbereiches statt einer Zeile mindestens 50 Zeilen Code umfassen wird.
Die Beschreibung dieses Bug habe ich bei Microsoft nur im Zusammenhang mit VBA entdeckt..

#1 von chrugail am Mai 14, 2009 - 06:46
Dieses Problem haben wir gelöst. Es sind 85 Zeilen Code geworden. Quellcode gibt es nicht, da der Code während meiner Arbeitszeit entstanden ist und somit der Firma gehört.