Hallo,
wieder eine Frage zum Thema ExcelExport:
ich weiß nicht, ob es irgendwie besser oder einfacher geht:
Prinzipiell möchte ich möglichst schnell die Daten aus meiner
SQL-Tabelle in ein Excel-File oder Excel selbst exportieren.
Jetzt hatte ich folgende Funktion genutzt, die auch nur suboptimal funktioniert:
Delphi-Quellcode:
procedure DBGridToExcelADO(DBGrid: TDBGrid; FileName: string; SheetName: string);
var
i : integer;
ADOCon : TAdoConnection;
Qu1 : TAdoQuery;
begin
AdoCon:= TAdoConnection.Create(nil); AdoCon.LoginPrompt := False;
AdoCon.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source='+
FileName + ';Extended Properties=Excel 8.0';
Qu1:= TAdoQuery.Create(nil);
Qu1.Connection := AdoCon;
Qu1.SQL.Text := 'Select * from ['+ SheetName +'$]';
Qu1.Open;
try
with DBGrid.DataSource.DataSet do begin
First;
while not eof do begin
Qu1.Append;
with DBGrid.Columns do begin
Qu1.Edit;
for i:= 0 to Count-1 do
if Items[i].visible then begin
Qu1.FieldByName(Items[i].Title.Caption).AsString:= FieldByName(Items[i].FieldName).AsString;
ShowMessage ('OrgLen: '+ IntToStr ( length (FieldByName(Items[i].FieldName).AsString))+' '+#13#10+
'NewLen: '+IntToStr ( length ( Qu1.FieldByName(Items[i].Title.Caption).AsString)));
end;
Qu1.Post;
end;
Next;
end;
end;
Wenn OrgLen > 255 ist, dann ist die NewLen immer 255 und die restlichen Zeichen werden abgeschnitten.
Hat jemand eine Idee, was man da machen könnte?
Danke Tim