环境:delphi 7 ,SQL SERVER 2000
现在的情况是在sql里面有许多存储过程,在delphi中调用这些过程
现在想在delphi中将存储过程返回的结果集(有很多条记录)导出到excel中。
请问该如何操作。

解决方案 »

  1.   

    以前写的
    var
      SaveDialog2: TSaveDialog;
      hFile: TextFile;
      SFile,OFile: TFileStream;
      i: integer;
    begin
      SaveDialog2 := TSaveDialog.Create(Self);
      SaveDialog2.Filter:= 'Xls file(*.xls)|*.xls';
      SaveDialog2.DefaultExt := '*.xls';
      SaveDialog2.FilterIndex := 1;
      if SaveDialog2.Execute then
        if fileexists(SaveDialog2.FileName) then
          if MessageDlg('文件已存在,是否替换文件?',mtInformation,[mbYes, mbNo],0) = mrNo then
            exit;
      AssignFile(hFile,ExtractFilePath(Application.ExeName)+'tmprec.txt');
      ReWrite(hFile);
      try
        ws:= '';
                for i:= 0 to ADOQuery1.FieldCount-1 do
                ws:= ws+ADOQuery1.Fields[i].FieldName+',';
                Writeln(hFile,ws);
                ADOQuery1.First;
       while (not ADOQuery1.Eof) do
       begin
         ws:= '';
         for i:= 0 to ADOQuery1.FieldCount-1 do
         ws:= ws+ADOQuery1.Fields[i].AsString+',';
         Writeln(hFile,ws);
         ADOQuery1.Next;
       end;
      CloseFile(hFile);
      SFile:= TFileStream.Create(ExtractFilePath(Application.ExeName)+'tmprec.txt',fmOpenRead);
      OFile:= TFileStream.Create(SaveDialog2.FileName,fmOpenWrite or fmCreate);
      OFile.CopyFrom(SFile,SFile.Size);
      OFile.Free;
      SFile.Free;
    except
      CloseFile(hFile);
    end;
      

  2.   

    如果你有用cxGrid的话,更简单,可以临时生成DataSource和cxGrid,再引用cxExportGrid4Link单元直接导出
    ExportGrid4Toexcel(ExtractFilePath(Application.ExeName)+'SaveXLS\'+s+'.xls',cxGrid1,true,true,false);另外,你也可以找找F1book这个第三方控件,也可以导出数据集到xls,txt等格式
      

  3.   

    ADOQuery1 的属性应该怎么设置?