.请问代码怎么写.因为对DELPHI不熟.数据格式
ID  Name Age
1   aaa 24
2   bbb 34
3   ccc 43
请给出代码.谢谢
最好能给出整个工程文件

解决方案 »

  1.   

    你可以去看一下Delphi方面的书
    一些入门书也写着的
    而且Delphi有这方面的控件
    试试看你行的
    :)
      

  2.   

    procedure TFileForm.BitBtn4Click(Sender: TObject);
    var
        Ole_Exl:TExcelApplication;
        Ole_rang:Excel2000.Range;
        Ole_Workbook: Excel2000._Workbook;
        Int_row,int_col:integer;
    begin
        cds_profile.Open;
        cds_profile.DisableControls;
        cds_profile.First;
        Try
          Ole_Exl:=TExcelApplication.Create(self);
          Ole_Workbook:=Ole_Exl.Workbooks.Add('c:\book1.xls',0);
        Except
          application.MessageBox('没有Excel或没有book1.xls!','提示',mb_ok+mb_iconinformation);
          abort;
        End;
        Ole_rang:=Ole_Exl.Cells;
        FOR int_row:=1 To cds_profile.RecordCount do
        Begin
            For int_col:=0 To dxDBGrid1.ColumnCount-1 do
            Begin
               if dxDBgrid1.Columns[int_col].Field.Value<>NULL then
               Ole_rang.Cells.Item[Int_row,int_col+1]:=dxDBgrid1.Columns[int_col].Field.Value
               else
               begin
                 application.MessageBox('数据不完整!','提示!',mb_ok+mb_iconinformation);
                 abort;     
               end;
            End;
            cds_profile.Next;
        End;
      

  3.   

    user28的方法是把数据显示在dbgrid中,然后到处到excel里
      

  4.   

    var savename:string;
        MsExcel,MsExcelWorkBook: variant;
        My_FileName:String;
    begin
      My_FileName:='c:\a.xls';
      if not FileExists(My_FileName) then  //判斷該文件是否存在
      begin
        showmessage('Error!-The Excel File '+My_FileName+' can''t be found.');
        exit;
      end;
     try
         try
           MsExcel := CreateOleObject('Excel.Application'); //創建
           MsExcelWorkBook := MsExcel.WorkBooks.Open(My_FileName);
           MsExcel.Worksheets[cmbProcess.Text].select;
         except
           MessageDlg('Could not start Microsoft Excel.',mtWarning,[mbOK],0);
           Exit;
         end;     Try
           SaveToExcel(MsExcel);  //自定義函數,用於保存       if Sender = sbtnSave then
           begin
             if SaveDialog1.Execute then
             begin
               savename:=SaveDialog1.FileName;
               MsExcelWorkBook.SaveAs(savename);
               MessageDlg('Save Excel File OK',mtInformation,[mbOK],0);
             end;
           end;
           if Sender = sbtnPrint then
           begin
             MsExcel.Visible:=TRUE;
             MsExcel.WorkSheets[cmbProcess.Text].PrintPreview;
           end;
         Except
           MessageDlg('Excel Error',mtInformation,[mbOK],0);
         end;
       finally
         MsExcelWorkBook.Close(False);
         MsExcel.Application.Quit;
         MsExcel:=Null;
       end;
    end;
    //SaveToExcel()函數
    var j,i,iGoal,quo,rem,istartRow:integer;
        vRange1:Variant;
        irow, iCol : Integer;
    begin
      for irow := 0 to cStrGridData.RowCount - 1 do
      begin
        for icol := 0 to cStrGridData.ColCount - 1 do
          if icol >= 10 then
            MsExcel.Worksheets['Sheet'].Range[Chr(icol+66)+IntToStr(irow+1)].Value:=cStrGridData.cells[icol,irow]
          else
            MsExcel.Worksheets['Sheet'].Range[Chr(icol+65)+IntToStr(irow+1)].Value:=cStrGridData.cells[icol,irow];
      end;
    end;
      

  5.   

    上述代碼說明:
    cStrGridData是一個用於紀錄數據內容的控件名稱;
    'cmbProcess.Text'多應該改為'Sheet'
      

  6.   

    给你一个通用的:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Excel2000, OleServer, Grids, DBGrids, StdCtrls;type
      TForm1 = class(TForm)
        ExcelApplication1: TExcelApplication;
        ExcelWorksheet1: TExcelWorksheet;
        ExcelWorkbook1: TExcelWorkbook;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Button1: TButton;
        ComboBox1: TComboBox;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure ComboBox1Change(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      i : integer ;
    begin
      ADOQuery1.Close ;
      ADOQuery1.SQL.Clear ;
      ADOQuery1.SQL.Add('select * from v170_sa.ordertoivr ') ;
      ADOQuery1.Open ;
      ComboBox1.Clear ;
      ComboBox1.Items.BeginUpdate ;
      i:= 0 ;
      while not ADOQuery1.Eof do
      begin
        ComboBox1.Items.Add(ADOQuery1.Fields[0].AsString);
        //ComboBox1.Items.ValueFromIndex[i] := ADOQuery1.Fields[1].AsString;
        ADOQuery1.Next ;
        Inc(i) ;
      end ;
      ComboBox1.Items.EndUpdate ;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j : integer ;
    begin
       ExcelWorkSheet1.Disconnect;
       ExcelWorkbook1.Disconnect;
       ExcelApplication1.Disconnect ;
       ExcelApplication1.Connect;
       ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(Null,0));
       ExcelWorkSheet1.ConnectTo(ExcelWorkbook1.Worksheets.Item[1] as _WorkSheet);
       ExcelWorkSheet1.ConnectTo(ExcelWorkbook1.WorkSheets.Add(Null, Null ,Null,
                                Null, 0) as _WorkSheet);   for i := 0 to ADOQuery1.FieldDefList.Count   -1 do
       begin
          ExcelApplication1.Cells.Item[3,i+3]:=ADOQuery1.Fields[i].DisplayName ;
          ADOQuery1.First ;
          for j := 0 to ADOQuery1.RecordCount -1 do
          begin
            ExcelWorkSheet1.Rows.ShrinkToFit ;
            ExcelApplication1.Cells.Item[4+j,i+3]:=''''+ADOQuery1.Fields[i].AsString  ;
            ExcelApplication1.Cells.Item[4+j,i+3].font.size:='14';
            ExcelWorkSheet1.Rows.ShrinkToFit ;
            ADOQuery1.Next ;
          end ;
       end ;
       ExcelApplication1.Caption :='报表输出打印';  //更改 Excel 标题栏
      // ExcelWorkbook1.ReadOnlyRecommended[1] := True ;
       ExcelWorkbook1.ReadOnly[1];
       ExcelApplication1.Visible[0]:=true;//显示当前窗口:end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      try    ExcelApplication1.ActiveWorkbook.Saved[1]  := True ;//放弃存盘
        ExcelWorkSheet1.Disconnect;
        ExcelWorkbook1.Disconnect;
        ExcelApplication1.Disconnect ;
        ExcelApplication1.Workbooks.Close(1) ;
        Application.Terminate ;
      except
      end ;
    end;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      Edit1.Text :=
      ComboBox1.Items.ValueFromIndex[ComboBox1.Items.IndexOf(Trim(ComboBox1.Text))];
    end;end.
      

  7.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB,ComObj;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        DBGrid1: TDBGrid;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    var
      ExlApp:variant;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Close;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j,rows,cols:Integer;
    begin
       //创建OLE对象Excel Application
       ExlApp:= CreateOleObject('Excel.Application');
     try
       ExlApp.workBooks.Add;
     except
       messagebox(handle,'您的机器里可能未安装Microsoft Excel或异常','无法生成',MB_OK  or MB_ICONWARNING);
       Exit;
     end; ExlApp.visible:= true;
     hide;
     adotable1.Close;
     adotable1.Open;
     cols:=adotable1.FieldCount;
     rows:=adotable1.RecordCount;
     try
       for i:=0 to dbgrid1.Columns.Count-1 do
       begin
          ExlApp.cells(1,i+1):=dbgrid1.Columns[i].FieldName;
       end;   for i:=1 to rows do
       begin
          for j:=1 to cols do
            begin
              ExlApp.cells(i+1,j):=DBGrid1.Columns[j-1].Field.Value;
            end;      dbgrid1.DataSource.DataSet.MoveBy(1); 
       end;
     finally
      show;
     end;
     application.BringToFront;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
     //关闭eclApp
     //若不进行这一步,在任务管理器中会驻留Excel进程
     //但可以不必关闭Excel (eclApp.Quit),这样,操作员可以继续编辑或打印表格
     ExlApp:= Unassigned;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      showmessage(IntToStr(dbgrid1.Columns.Count));
      ShowMessage(IntToStr(adotable1.RecordCount));
    end;end.
      

  8.   

    acStore: TADOConnection;
    var
      FileName: string;
    begin
      FileName := ExtractFilePath(Application.ExeName) + 'store.xls';
      if FileExists(FileName) then DeleteFile(FileName);
      try
        acStore.Execute('select * into [Excel 8.0; Database=' + FileName + '].[sheet1] from stable');
        MessageBox(self.Handle, '数据已成功导出为store.xls', '提示', mb_IconInformation + mb_Ok);
      except
        MessageBox(self.Handle, '数据导出失败!', '提示', mb_IconInformation + mb_Ok);
      end;
    end;这就行了