希望详细点,谢谢!

解决方案 »

  1.   

    没有,我的意思是想导出DBGrid中显示的内容
      

  2.   

    希望会对你有所帮助!
    将查询结果显示在DBGrid中,再生成Excel文件
    procedure Tmulti_searchform.ButtontoExcelClick(Sender: TObject);
    var
      eclApp,WorkBook:Variant;
      //声明为OLE Automation 对象
      xlsfilename,dir_name:string;
      i,j,n:integer;
    begin
      //savedialog1.Execute;
      savedialog1.Filter:='Excel files(*.xls)|*.xls';
      dir_name:=ExtractFilePath(Application.ExeName)+'ExcelBook\';
      if not directoryexists(dir_name) then
        createdir(dir_name);
      savedialog1.InitialDir:=dir_name;
      if savedialog1.Execute=true then
        begin
          xlsFileName:=savedialog1.FileName;
          try
            //创建OLE对象Excel Application与 WorkBook
            eclApp:=CreateOleObject('Excel.Application');
            WorkBook:=CreateOleobject('Excel.Sheet');
          except
            ShowMessage('您的机器里尚未安装Microsoft Excel。');
            Exit;
          end;
          try
            //ShowMessage('新建一个EXCEL文件,并保存');
            Application.MessageBox('将新建一个EXCEL文件,并保存','注意',MB_OK+MB_Defbutton1)
          finally
            progressbar1.Visible:=true;
            workBook:=eclApp.workBooks.Add;
            multi_dataMForm.ADODataSet3.first;
            i:=1;
            j:=1;
            for n:=0 to multi_dataMForm.ADODataSet3.fieldcount-1 do
              begin
                eclApp.cells(i, j):=self.DBGrid1.Columns.Items[n].Title.Caption;
              //  eclApp.cells(i, j):=multi_dataMForm.ADODataSet3.fields[n]..displaylabel;
                j:=j+1;
              end;
            multi_dataMForm.ADODataSet3.Active:=true;
            multi_dataMForm.ADODataSet3.first;
            while not multi_dataMForm.ADODataSet3.eof do
              begin
                inc(i);
                for j:=0 to multi_dataMForm.ADODataSet3.fieldcount-1 do
                  begin
                    progressbar1.Position:=(i*100) div multi_dataMForm.ADODataSet3.RecordCount;
                    eclApp.cells(i,j+1):=multi_dataMForm.ADODataSet3.Fields.Fields[j].Text;
                  end;
                multi_dataMForm.ADODataSet3.Next;
              end;
            progressbar1.Visible:=false;
            WorkBook.saveas(xlsFileName);
            WorkBook.close;
          end;
        end;
    end;
      

  3.   

    FastReport中有此功能,但我不会用。那位用过此功能的帮帮忙
      

  4.   

    fastreport导出实在不稳定呀,有得时候导出是空白,有时候有数据,但显示乱七八糟!还是不要用吧!
      

  5.   

    Grid导出、打印等控件很多,如EhLib(DBGridEh),不建议使用fastreport