如何将数据集内容导出为Excel文件?
Dataset已经打开,如何将其中记录、字段导出为Excel文件?

解决方案 »

  1.   

    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;