求高手CSV输出问题:
如何把数据库里的数据用EXCEL文件形式保存下来.
只知道DEIPHL有STRINGLIST,和TOSAVEFILE方法.
如何把数据放到LIST里面循环输出呢
谢谢了!!字段为A, B, C

解决方案 »

  1.   

    看不懂你的意思!var
      i: Integer;
      s: String;
      slTmp: TStrings;
    begin
      //你自己的查询
      ADOQuery1.Open;
      slTmp := TStringList.Create;
      try
        ADOQuery1.First;
        while not ADOQuery1.Eof do
        begin
          s := '';
          for i:=0 to ADOQuery1.FieldCount-1 do
            s := s + ADOQuery1.Fields[i].AsString + ',';
          s := Copy(s, 0, Length(s)-1);
          slTmp.Add(s);      ADOQuery1.Next;
        end;
        ADOQuery1.Close;
      finally
        slTmp.SaveToFile('TEMP.CSV');
        FreeAndNil(slTmp);
      end;
    end;是需要这样吗?
      

  2.   

    我这里有一个程序,可参考?procedure TFrmQryO3ByTime.BitBtn3Click(Sender: TObject);
    Var
       MyExcel,myworkbook,mysheet,myrange,myrange1,myrange2:variant;
       Str,strRow,strYear,strMon,strDay:string;
       Arow,Acol,Num,i:integer;
    begin
      {Initialize the tile of the cexcel table}
         {Create new Excel Application} try
       MyExcel:=createoleobject('excel.application');
       MyExcel.Visible :=true;
       myworkbook:=createoleobject('excel.sheet');
       except
          application.messagebox('无法打开Xls文件,请确认已经安装excel.','',mb_ok+mb_iconstop);
          exit;
       end;
     try
       Screen.Cursor :=CrHourGlass;
        myworkbook:=MyExcel.workbooks.open('D:\O3MIS\export\O3AvgHour.xls');
        MySheet:=myworkbook.worksheets['ccc信息表'];   
         For i := 1 To 2000 do begin        MySheet.Cells[i,1] := '';
            MySheet.Cells[i,2] := '';
            MySheet.Cells[i,3] := '';
            MySheet.Cells[i,4] := '';     end;
         MySheet.Cells[1,1]:= '站点编号' ;
         MySheet.Cells[1,2]:= '日期' ;
         MySheet.Cells[1,3]:= '小时' ;
         MySheet.Cells[1,4]:= '浓度(ppm)' ;     ADOQryYearO3.First;
         For i := 1 To ADOQryYearO3.RecordCount  do begin
            MySheet.Cells[i+1,1]:= ADOQryYearO3.FieldByName('站点编号').AsString;
            MySheet.Cells[i+1,2]:= ADOQryYearO3.FieldByName('日期').AsString;
            MySheet.Cells[i+1,3]:= ADOQryYearO3.FieldByName('小时').AsString;
            MySheet.Cells[i+1,4]:= ADOQryYearO3.FieldByName('ccc').AsString;
            ADOQryYearO3.next;
         end;  
       // MySheet.PrintOut;  //2005-7-11
        myworkbook.save;
        myworkbook.close;
        MyExcel.quit;
        MyExcel:=unassigned;
        Application.MessageBox(打印完成','打印', 32);
      except
          myworkbook.close;
          MyExcel.quit;
      end;  Screen.Cursor :=CrDefault;end;
      

  3.   

    楼上的使用OLE方式,如果数据量大的话会很慢的,如果想将RecordSet导出到Excel文件,建议使用XLSReadWriteII组件,速度和OLE简直就是两个档次。