你可以利用本身有的dataump工具,它的操作很简单。选择数据库用户名,选择表名就可以手工导入。
如果非要写代码的话。也很简单:
用Query控件访问EXCEL表,将记录取出。利用另一个Query控件进行写库操作。

解决方案 »

  1.   

    将数据库内容到入到Excel中并保存
    procedure WriteDatasetToExcel(AQueryName: TQuery; AStrVar: String);
    <br />var
    <br />  EclApp,WorkBook : Variant;
    <br />  xlsFileName : String ;
    <br />  I : Integer ;
    <br />  column : Integer ;
    <br />  Row : Integer ;
    <br />  Fdate:TDateTime;
    <br />  Year, Month, Day, Hour, Min, Sec, MSec: Word;
    <br />  StrDate:String ;
    <br />  StrDate1:String ;
    <br />Begin
    <br />  Fdate:=now ;
    <br />  DecodeDate(Fdate, Year, Month, Day);
    <br />  DecodeTime(Fdate, Hour, Min, Sec, MSec);
    <br />  StrDate:=formatdatetime('yyyy-mm-dd-hh-mm-ss',Fdate) ;
    <br />  StrDate1:=formatdatetime('yyyy/mm/dd hh:mm:ss',Fdate) ;
    <br />  If AStrVar='Excel文件' Then
    <br />  Begin
    <br />  xlsfilename :='Excel文件';
    <br />  End ;
    <br />
    <br />  Try
    <br />    Begin
    <br />      EclApp := CreateOleObject('Excel.Application');
    <br />      WorkBook:=CreateOleObject('Excel.Sheet');
    <br />    End
    <br />  Except
    <br />    ShowMessage('您的計算机上沒有Microsoft Excel!');
    <br />    Exit;
    <br />  end;
    <br />  try
    <br />    workBook:=EclApp.workBooks.Add ;
    <br />    row:=2;
    <br />    EclApp.Workbooks.Item[1].Activate;
    <br />    eclApp.Cells.font.colorindex:=5 ;
    <br />    EclApp.Activesheet.Cells(1,1):=AStrVar ;
    <br />    For I := 1 To AQueryName.FieldCount Do
    <br />      EclApp.Activesheet.Cells(2,I):=AQueryName.Fields[I-1].FieldName ;
    <br />    If Not AQueryName.Active Then AQueryName.Active := True ;
    <br />    AQueryName.First;
    <br />  While Not(AQueryName.Eof) do
    <br />  begin
    <br />    column:=1;
    <br />    for i:=1 to AQueryName.FieldCount do
    <br />    begin
    <br />      eclApp.Cells.Item[row+1,column]:=AQueryName.fields[i-1].AsString;
    <br />      column:=column+1;
    <br />    end;
    <br />    AQueryName.Next;
    <br />    row:=row+1;
    <br />  End;
    <br />  WorkBook.saveas(xlsFileName);
    <br />  WorkBook.close;
    <br />  WorkBook:=eclApp.workBooks.Open(xlsFileName);
    <br />  if MessageDlg('xlsFileName'+'此文件是否保存?',
    <br />  mtConfirmation,[mbYes, mbNo], 0) = mrYes then
    <br />    WorkBook.save
    <br />  Else
    <br />    workBook.Saved := True;
    <br />    WorkBook.Close;
    <br />    eclApp.Quit;
    <br />    eclApp:=Unassigned;
    <br />  except
    <br />    ShowMessage('Excel文件保存失敗');
    <br />    WorkBook.close;
    <br />    eclApp.Quit; 
    <br />    eclApp:=Unassigned;
    <br />  end;
    <br />  ShowMessage('EXCEL 文件保存完畢。');
    <br />end;
      

  2.   

    请问用query空件如何访问excel?
      

  3.   

    TO  文文夹 :我用过。DATAPUMP,但是因为有一个字段的长度大于255,所以只能写代码了但是对,EXCEL的控件不太熟你能不能说明白一点,
      

  4.   

    在李维的ADO/MTS/COM一书中有如何访问Excel的例子,你可以拿来看。
    大致情况是这样的,先在“数据源(ODBC)”里建一个连接Excel文件的DSN,然后在Delphi项目里通过ADO(或BDE)形式来连接这个数据源(其实就相当于把Excel文件看作是一个数据库了)。如果全说出来挺多的,你如果想了解的话可以给我来信([email protected]),我在信里慢慢给你说清楚。