我用ADO+SQL.如果只是将SQL的结果拷到EXCEL或升成EXCEL文件,用SQL语句就行了。
但我想要的是,将DBGrideh进行全选后,将内容复制并拷贝到EXCEL中。
已经进行过搜索,但没有找到结果。
有朋友的回答过可用DBGrideh的有关功能进行。但到底怎样做?
还请明示。
通过马上结贴。

解决方案 »

  1.   

    我想要的是,将DBGrideh进行全选后,将内容复制并拷贝到EXCEL中。
      

  2.   

    uses ComObj;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      MSExcel:Variant;
      i,j:integer;
    begin
      SaveDialog1.Filter:='*.XLS|*.XLS';
      SaveDialog1.DefaultExt:='XLS';
      if SaveDialog1.Execute then
      begin
        MsExcel:=createOLEobject('excel.application');
        MsExcel.workBooks.add;
        Msexcel.visible:=false;
        with DataSource1.Dataset  do
        begin
          first;
          for i:=0 to dbgrid.SelectedRows.Count-1 do     //选择dbgd的内容
          begin
            GotoBook(pointer(SelectedRows.Items[i]));//放到dataset中
            Msexcel.cells[1,i+1].value:=fields[i].DisplayLabel ;
          end;
          j:=2;
          while not eof do
          begin
            for i:=0 to dbgrid.SelectedRows.Count-1 do     
            begin
              GotoBook(pointer(SelectedRows.Items[i]));
              Msexcel.cells[j,i+1].numberformat:='@';
              Msexcel.cells[j,i+1].value:=fields[i].AsString ;
            end;
            inc(j);
            next;
          end;
        end;
        MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
        MSExcel.ActiveWorkBook.Saved:=True;
        MSExcel.Quit;
      end;
    end;
      

  3.   

    哦,我的理解:
    导出是生成一个EXCEL文件,复制后粘贴则是很方便的操作。这对初学的人很有用。
      

  4.   

    To Workers:你的功能是生成并将数据保存到一个Excel里吧?这是不我想要的。
      

  5.   

    有一种解决的方法:1,在uses里加上DBGridEhImpExp.
    2,把GBgrideh的multiselect设置成true
    2.在event(你要用的命令按纽等)里写上:
    DBGridEh_DoCopyAction(DBGridEh1,False);
    就可以进行复制了; 打开Excel可以直接粘贴在工作溥里.当然,如果要直接生成文件,Workers的方法也是一种好方法.
      

  6.   

    行了,试了AntJapansyzQ(//**//) 的方法,可行。其实,因为用的是SQL库,如果要导出到EXCEL的话,用SQL的语句是很简单的,不直接用DELPHI的那么复杂。
      

  7.   

    但结贴前仍要谢谢Workers.因为毕竟多了一种解决问题的方法。
      

  8.   

    procedure TForm2.BitBtn3Click(Sender: TObject);
    var
      range:excelrange;
      i,j:integer;
      letter:char;
    begin
    if messagedlg('是否把差生内容导入到Excel?',mtconfirmation,[mbyes,mbno],0)=mryes then
      try
        try
        excelapplication1.Connect;
        except
        showmessage('您的机器没有安装Excel!');
        abort;
        end;
        excelapplication1.Visible[0]:=true;
        excelapplication1.Caption:='查询分析内容';
        excelapplication1.Workbooks.Add(NUll,0);    i:=65+datasource1.DataSet.FieldCount-1;
        letter:=char(i);    range:=excelapplication1.Range['A1',letter+'1'];    for i:=0 to datasource1.DataSet.FieldCount-1 do
          begin
          range.Value:=datasource1.DataSet.Fields[i].DisplayLabel;
          range:=range.Next;
          end;    datasource1.DataSet.First;    for i:=1 to datasource1.DataSet.RecordCount do begin
          range:=excelapplication1.Range['A'+inttostr(i+1),letter+inttostr(i+1)];
          for j:=0 to datasource1.DataSet.FieldCount-1 do begin
            if not datasource1.DataSet.Fields[j].IsBlob then
            range.Value:=datasource1.DataSet.Fields[j].AsString
            else range.Value:='不支持图片显示';
            range:=range.Next;
            end;
          datasource1.DataSet.Next;
          end;  except
      excelapplication1.Disconnect;
      end;
    end;
      

  9.   

    控件包中有一单元DBGridEhImpExp提供了相应的方法uses
      DBGridEhImpExp;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, DBGridEh1, 'c:\temp\file1.xls',
        True);
    end;