Ich habe die Else-Anweisung hinzugeüfgt, dort springt er überhaupt nicht rein.
Na, das ist doch schon mal was.
Dann verwende mal eine Zwischenvariable für das Feld damit du besser debuggen kannst
Delphi-Quellcode:
var
f:TField;
for j:= 1 to iColumnsCount do
begin
f := vDS.Fields.Fields[j - 1];
case f.DataType of
ftString : XLArrayData[i, j] := f.AsString;
ftInteger : XLArrayData[i, j] := f.AsInteger;
...
Zusätzlich solltest du den Datentyp
Variant überall durch
OleVariant ersetzen.