请问,如何设计delphi程序界面,选中一个EXCEL文件,将EXCEL中的数据导入到ACCESS或SQL SERVER 2000数据库中.

解决方案 »

  1.   

    TO:may_05,是要导入到数据库的某个表中,而且这个表的字段和EXCEL表中的列是对应的。
      

  2.   

    用TADOQuery取出Excel中的数据,但是Excel中的数据都是字符串,所以你要根据导入的数据表中的字段定义做相应的转换,这样才不会出现异常.
      

  3.   

    让我举一个例子吧:procedure TForm1.Button1Click(Sender: TObject);
    var
     a_cc: TStrings;
     ExcelApp: Variant;
    begin
     if OpenDialog1.Execute then begin
       {打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误}
        ExcelApp := CreateOleObject( 'Excel.Application' );
        ExcelApp.WorkBooks.Open(OpenDialog1.FileName);
        ExcelApp.ActiveWorkBook.Save;
        ExcelApp.Quit;
        varclear(ExcelApp);
        
       a_cc :=TStringList.Create;
        {ADOConn是数据库连接控件ADOConnection}
        ADOConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog1.FileName + ';Extended Properties=excel 8.0;Persist Security Info=false';
        ADOConn.Connected := True;
        ADOConn.GetTableNames(a_cc);{将EXCEL文件中的表格名单赋值于a_cc变量}
        with adoquery2 begin
             Close;
             sql.text:='select * from ['+a_cc[0]+']';//得到EXCEL文件中的第一个表格的数据
              open;
          while not eof begin
          adoquery1.Append;
          adoquery1.FieldByName('xf_a').AsString:=FieldValues['工号'];
          adoquery1.FieldByName('xf_b').AsString:=FieldValues['姓名'];
          adoquery1.FieldByName('xf_c').AsString:=FieldValues['部门'];    
          adoquery1.post;  
          next;
          end;
          close;
        end;
         
       adoconn.Connected:=false;
       a_cc.Free;
       messagebox(handle,'数据处理完毕','提示',MB_OK+MB_ICONINFORMATION);
                     end;
    end;
      

  4.   

    大意了,忘记要引用ComObj;uses ComObj;
      

  5.   

    查看进程是否出现多个EXCEL进程,如果是请结束那多出来的进程再试
      

  6.   

    还是不行,能加QQ详谈吗? 我的QQ119524311,我很急,谢谢!
      

  7.   

    又出现错误 “找不到可安装的 ASAM”。
      

  8.   

    公司禁用QQ,留下你的邮箱地址,等会儿传一个示例给你,因为我没有ACCESS的调试环境,正在下载,所以要用时间.
      

  9.   

    [email protected]  EXCEL表是2003,DELPHI7.0里是EXCEL2000组件. 先谢谢了!
      

  10.   

    示例文件包里内,有一个EXCEL文件的,你用它来试试吧,我在我这里调试过,同时也传到朋友那里测试过是可行的
      

  11.   

    TO:may_05,是要导入到数据库的某个表中,而且这个表的字段和EXCEL表中的列是对应的。
    var
      str:string;
    begin
      str:='select * into 表 from opendatasource(''microsoft.jet.oledb.4.0'',''data source=''文件名'';user id=admin;password=;extended properties=excel 5.0'')...[sheet1$]';
      with adoquery1 do
        begin
          close;
          sql.clear;
          sql.add(str);
          open; 
        end;
    end;
      

  12.   

    应该这样会好些,不是每个EXCEL的表格都是sheet1的,但用这个方法个牺牲显示进度之类的效果procedure TForm1.Button1Click(Sender: TObject);
    var
    ExcelApp: Variant;
    strv,str:string;
    begin
     if OpenDialog1.Execute then begin
       {打开保存一次EXCEL文件,为何要保存一次呢?如果是其它程序用第三方控件导出的EXCEL文件,最好做此步,否则容发生错误}
        ExcelApp := CreateOleObject( 'Excel.Application' );
        ExcelApp.WorkBooks.Open(OpenDialog1.FileName);
        strv:=ExcelApp.WorkSheets[1].name;
        ExcelApp.ActiveWorkBook.Save;
        ExcelApp.Quit;
        varclear(ExcelApp);
       
        str:='select * into 表 from opendatasource(''microsoft.jet.oledb.4.0'',''data source=''文件名'';user id=admin;password=;extended properties=excel 5.0'')...['+strv+'$]';
      with adoquery1 do
        begin
          close;
          sql.clear;
          sql.add(str);
          open; 
        end;
     end;
    end;
      

  13.   

    TO:GDTOPONE 
    也能给我一个份子例子吗?
    Excel to MSSQL
    [email protected]
      

  14.   

    Access可以通过ODBC访问SQL SERVER, Excel,....,MDB文件当然也行了。
    导入导出都很简单。
      

  15.   

    SQL导出导入ACCESS数据库和Excel工具,包含Delphi的源代码,而且可以直接选择导出MS SQL Server的任何一个数据表的数据,也能导入Access和Excel的数据到相应的数据表。这是一个非常实用的SQL导入导出工具。下载地址:http://download.csdn.net/source/341797
      

  16.   

    TO:GDTOPONE   
    多谢大侠。能否把你的例子发给我一份呢
    Email:[email protected]