用nativeExcel,无需安装excel,也可导出(非Com形式)。
NativeExcel里面封装了一个控件,DataSet、dbgrid导Excel

解决方案 »

  1.   

    我只想把TClientDataSet查到的数据导出到excel,请问该怎么处理呢?
      

  2.   

    我只想把TClientDataSet查到的数据导出到excel,请问该怎么处理呢?
    TClientDataSet不是DataSet吗?可以直接用,且导出效率高。或者你不想用控件?想自己写?或者你想用拷贝就能用代码,控件都不想研究?
      

  3.   

    我只想把TClientDataSet查到的数据导出到excel,请问该怎么处理呢?
    TClientDataSet不是DataSet吗?可以直接用,且导出效率高。或者你不想用控件?想自己写?或者你想用拷贝就能用代码,控件都不想研究?

    就是想直接用TClientDataSet,但是不知道怎么用,刚接触delphi。
      

  4.   

    以下的处理,可以参考,用COM,有弊端。估计你阅读这样的代码会吃力,更不用说剥离DataSet部分。
    http://bbs.csdn.net/topics/290088735
    也可参考博客里的代码 http://blog.csdn.net/avan_lau/article/details/24470345
    这里有你可以直接拷贝用的代码
      

  5.   

    我只想把TClientDataSet查到的数据导出到excel,请问该怎么处理呢?
    TClientDataSet不是DataSet吗?可以直接用,且导出效率高。或者你不想用控件?想自己写?或者你想用拷贝就能用代码,控件都不想研究?

    就是想直接用TClientDataSet,但是不知道怎么用,刚接触delphi。
    如果一无所知,就来问题。很难给问题一个善终....
      

  6.   

    可以把TClientDataSet中的数据用dbgrideh显示出来,然后利用dbgrideh的功能可以保存为多种格式包括excel。 在窗体中添加一个SaveDialog组件和“导出”按钮B_exp,在“导出”按钮的click事件中添加如下代码:
    procedure TForm1.B_expClick(Sender: TObject);
    var
      ExpClass:TDBGridEhExportClass;
      Ext:String;
    begin
      SaveDialog1.FileName := 'file1';
      if (ActiveControl is TDBGridEh) then
        if SaveDialog1.Execute then
        begin
          case SaveDialog1.FilterIndex of
            1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
            2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
            3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
            4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
            5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
          else
            ExpClass := nil; Ext := '';
        end;
        if ExpClass <> nil then
        begin
          if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <> UpperCase(Ext) then
            SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
          SaveDBGridEhToExportFile(ExpClass,DBGridEh1,SaveDialog1.FileName,False);
          //其中false为局部数据
        end;
      end;
    end;
      

  7.   

    不好意思没看清楚不经过dbgrid不过你可以设置dbgrid或者dbgrideh 不可见啊,这样导出最快的,其他方式也试过,觉得都没这样方便。