Thema: Delphi Excel Export part 2

Einzelnen Beitrag anzeigen

Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#1

Excel Export part 2

  Alt 17. Sep 2008, 14:46
Datenbank: MS SQL • Version: 200 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat