听说用 Developer Express 控件可以实现该功能,可是小弟没用过这控件。有哪位大虾帮帮帮,有例子最好了。希望能够给小弟发一份。谢谢。[email protected]

解决方案 »

  1.   

    dbgrid的數據導入到excel中unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Grids, DBGrids, Db, DBTables, Excel97, OleServer, Word97;
    type
      TForm1 = class(TForm)
        ExcelApplication1: TExcelApplication;
        ExcelWorkbook1: TExcelWorkbook;
        ExcelWorksheet1: TExcelWorksheet;
        Table1: TTable;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Button1: TButton;
        Button4: TButton;
        WordApplication1: TWordApplication;
        WordDocument1: TWordDocument;
        procedure Button1Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      i, row, column: integer;
    begin
      Try
        ExcelApplication1.Connect;
      Except
        MessageDlg('Excel may not be installed',
          mtError, [mbOk], 0);
        Abort;
      End;
      ExcelApplication1.Visible[0] := True;
      ExcelApplication1.Caption := 'Excel Application';
      ExcelApplication1.Workbooks.Add(Null, 0);
      ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
      ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
      DBGrid.DataSource.DataSet.Open;
      row := 1;
      While Not (DBGrid.DataSource.DataSet.Eof) do
      begin
        column := 1;
        for i := 1 to DBGrid.DataSource.DataSet.FieldCount do
        begin
          ExcelWorksheet1.Cells.Item[row, column] := DBGrid.DataSource.DataSet.fields[i - 1].AsString;
          column := column + 1;
        end;
        DBGrid.DataSource.DataSet.Next;
        row := row + 1;
      end;
    end; procedure TForm1.Button4Click(Sender: TObject);
    begin
      ExcelApplication1.Disconnect;
      ExcelApplication1.Quit;
    end;end.
      

  2.   

    excelapplication1.Workbooks.Add(null,0); 
    这怎么报错了?ole
      

  3.   

    Anylib,创意、自由、灵活的体现,超强的报表功能,独特的双数据源连接,全功能的表格组件,它带给你的是轻松,美妙!http://www.anylib.com
      

  4.   

    procedure TForm1.Button11Click(Sender: TObject);
    var
      eclApp,WorkBook:olevariant;
      xlsFileName:string;
      i,j:integer;
    begin  if SaveDialog1.Execute then
          xlsFileName:=SaveDialog1.FileName;     try
          eclApp:=CreateOleObject('Excel.Application');
          WorkBook:=CreateOleObject('Excel.Sheet');
         except
          Application.MessageBox('系统没有安装Microsoft Excel','Microsoft Excel',MB_OK+MB_ICONWarning);
          Exit;
         end;     try
           WorkBook:=eclApp.workbooks.Add;
         for i:=0 to DBGrid1.Columns.Count-1 do
          begin
             eclApp.Cells(1,i+1):=DBGrid1.Columns[i].FieldName;
          end;      DBGrid1.DataSource.DataSet.First;
          j:=2;
          while not DBGrid1.DataSource.DataSet.Eof do
          begin
           for i:=0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
            begin
             eclApp.Cells(j,i+1):=DBGrid1.DataSource.DataSet.Fields[i].Value;
            end;
            DBGrid1.DataSource.DataSet.Next;
            inc(j);
          end;       WorkBook.SaveAS(xlsFileName);
           WorkBook.close;
          except
             ShowMessage('文件导出失败!');
             Exit;
          end;
         Application.MessageBox('保存成功!','恭喜',MB_OK + MB_ICONINFORMATION);
    end;
      

  5.   

    直接用dbgrideh 很容易的啊~!