Hallo,
nachdem ich ein StringGrid nach Excel exportiert habe,
will ich Zahlen auch als Zahl exportieren.
Problem: Das dauert ewig.
Der Code sieht wie folgt aus:
Delphi-Quellcode:
DoubleColumnList:= TDoubleColumnList.Create;
try
Grid_GetDoubleColumns(AGrid, DoubleColumnList);
sFormat:= 'Standard';
for iDoubleColumnItem:= 0 to DoubleColumnList.Count-1 do
begin
DoubleColumnItem:= DoubleColumnList[iDoubleColumnItem];
sRef_Start:= RefToCell(DoubleColumnItem.iCol+1, DoubleColumnItem.iRowStart+1);
sRef_End := RefToCell(DoubleColumnItem.iCol+1, DoubleColumnItem.iRowEnd+1);
bFormatError:= False;
if sFormat<>'' then
begin
try
Sheet.Range[sRef_Start,sRef_End].NumberFormat:= sFormat;
except
bFormatError:= True;
end;
if bFormatError then
begin
bFormatError:= False;
sFormat:= 'General';
try
Sheet.Range[sRef_Start,sRef_End].NumberFormat:= sFormat;
except
bFormatError:= True;
end;
if bFormatError then
begin
sFormat:= '';
end;
end;
end;
if bFormatError=False then
begin
for iRow:= DoubleColumnItem.iRowStart to DoubleColumnItem.iRowEnd do
begin
if TryStrToFloat(AGrid.Cells[DoubleColumnItem.iCol,iRow], dFloat) then
begin
sRef:= RefToCell(DoubleColumnItem.iCol+1, iRow+1);
Sheet.Range[sRef,sRef].Value:= dFloat;
end;
end;
end;
end; { for iDoubleColumnItem:= 0 to DoubleColumnList.Count-1 do }
finally
DoubleColumnList.Free;
end;
DoubleColumnList enthält eine Liste zusammenhängender Double-Bereiche
(spaltenbezogen, Spalte,Startzeile,Endzeile).
Das ganze drumrum (sFormat) hat mit den verschiedenen Excel-Versionen zu tun (u.a. 2007),
tut aber nix zur Sache.
Lange dauert es, wenn eine Spalte Lücken (z.B. leere Zellen) hat.
Dann gibt es hlt viele Bereiche, die formtiert werden müssen.
Gibt es keine Möglichkeit, mehrere Bereiche auf einmal zu formatieren ?
Hat jemand eine Idee ?
Danke
Heiko