我的这个DBGrid中的数据是通过查询语句得到的。用的ADOQuery做的查询。
查询结果中共有四个字段。这样的语句应该怎么写呢?

解决方案 »

  1.   

    用BDE的TTable连接一个Excel数据表,像操作数据库一样可以导到Excel中去!
      

  2.   

    以下是一个将DBGrid 中数据转入Excel的过程:
    procedure Dbtoexcel(dbgrid: Tdbgrid);
    var
    i,j,iCol : Byte ;
    ExcelApp,MyWorkbook : Variant;
    DataSet : TDataSet;
    begin
    try
    ExcelApp:=CreateOleObject('Excel.Application');
    MyWorkBook:=CreateOleobject('Excel.Sheet');
    ExcelApp.Visible := true;
    except
    on Exception do raise exception.Create('错误,请确认已经安装EXCEL')
    end;
    DataSet := Dbgrid.DataSource.DataSet;
    MyworkBook:=ExcelApp.workBooks.Add;
    iCol := 1 ;
    for j:=0 to dbgrid.Columns.Count - 1 do {标题}
    if DBGrid.Columns.Items[j].Visible then begin
    MyWorkBook.WorkSheets[1].Cells[1,iCol].Value :=
    DBGrid.Columns.Items[j].Title.Caption ;
    Inc(iCol);
    end;
    i := 2;
    DataSet.DisableControls ;
    DataSet.First;
    while not DataSet.eof do
    begin
    iCol := 1;
    for j:=0 to dbgrid.fieldcount-1 do
    if DBGrid.Columns.Items[j].Visible then begin //如果该列隐藏,则不输入Excel
    MyWorkBook.WorkSheets[1].Cells[i,iCol].Value :=
    DataSet.FieldByName(dbgrid.Fields[j].FieldName).AsString;
    Inc(iCol);
    end;
    Inc(i);
    DataSet.Next
    end;
    DataSet.Enablecontrols;
    ExcelApp.Visible := true;
    ExcelApp.Quit;
    end;
      

  3.   

    参阅:
      http://expert.csdn.net/Expert/topic/2136/2136929.xml?temp=.2077448
      

  4.   

    procedure TForm3.Excel4Click(Sender: TObject);   //将联合查询的结构转为excel表
    var       xlsFilename :string;
              eclApp,WorkBook :variant ;
              a_filedNo,i,j :integer;
    begin
              a_filedNo :=Form3.DBGrid4.FieldCount  ;
              xlsFileName :='关于学生成绩基本信息.xls';          try
                      eclApp :=CreateOleObject('Excel.Application');
                      WorkBook :=CreateOleObject('Excel.Sheet');
              except
                      showmessage('您的系统没有安装MS EXCEL');
                      exit;
              end;          try
                        WorkBook :=eclApp.workBooks.add ;
                        for i :=1 to  a_FiledNo do      //转化字段名;
                         begin
                                //eclApp.cells(1,i) :=Form3.DBGrid4.Columns[i-1].Title.caption ;
                                eclApp.cells(1,i) :=Form3.DBGrid4.Fields[i-1].FieldName ;
                         end;                    Form3.DBGrid4.DataSource.DataSet.First ;
                        for i :=1 to  Form3.a_recno   do    //Form3.a_recno                       begin
                                for j :=1 to  a_filedNo do  //转化一个记录
                                  begin
                                          eclApp.cells(i+1,j) :=Form3.DbGrid4.Fields[j-1].Value ;
                                  end;
                                Form3.DBGrid4.DataSource.DataSet.Next ;
                          end;
                    try
                         WorkBook.saveas(ExtractFilePath(Application.ExeName )+xlsFileName);
                         WorkBook.close;
                         showmessage('保存EXECL文件成功,路径为:'+ExtractFilePath(Application.ExeName )+xlsFileName);
                      except
                               showmessage('保存文件出错');
                      end;
                   except
                     showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
                     WorkBook.close;
                     eclApp.quit;
                     eclApp :=Unassigned;
             end;
    end;