已经作了好几天了。因为 才从学校出来,delphi学的不是很深,故请各位大虾帮帮忙!!!!
      扣谢!~~~~~~~~~~~~!!!!

解决方案 »

  1.   

    dsExcel.CommandText := 'select * from [表1$] a inner join [表2$] b on a.id = b.id';
    这就能打开两个sheet,然后再导入SQL就行了。
      

  2.   

    http://www.delphibbs.com/delphibbs/dispq.asp?lid=196114http://support.microsoft.com/default.aspx?scid=kb;zh-cn;321686希望能有所帮助
      

  3.   

    to 一云忆水
         非常感谢!~~
         但是我还是不清楚怎么实现,我是用ado组件通过odbc连接的excel文件,再导入到数据库(sqlserver)中的。
         你给我的链接上面只有代码,我想知道具体是怎么实现的。
         能不能帮个忙呢!?
         再次谢谢你给我的帮助!~~~~
      

  4.   

    const connstr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 8.0;Persist Security Info=False';
          select  = 'select 股票代码 as code, 股票名称 as namee from [%s] order by 股票代码';
          select1  = 'select 股票代码, 股票名称 from [%s]';
    procedure TfrmMain.BitBtn1Click(Sender: TObject);
    begin
      if Self.OpenDialog1.Execute then
      begin
        Self.edt1.Text := Self.OpenDialog1.FileName;
        Self.ADOConnection1.Close;
        Self.ADOConnection1.ConnectionString := Format(connstr, [OpenDialog1.FileName]);
        Self.ADOConnection1.Open;
        Self.ADOConnection1.GetTableNames(Tables);
        TableName := Tables[Tables.Count-1];
        Self.ADODataSet1.CommandText := Format(select, [TableName]);
        Self.ADODataSet1.Open;
      end;
    end;
      

  5.   

    其中
    Tables: TStrings;
    TableName: string;
    还要有:Tables := TStringList.Create;
      

  6.   

    我倒是写过这种程序..不过我只是导入一个Excel文件.......如果有需要的话.可以给我发邮件[email protected]
      

  7.   

    首先谢谢大家的帮助。
        to   hanlin2004
        你的代码好像不行。
      

  8.   

    我自己做的:
          分别用两个ADOConnection,一个通过odbc连接excel,也就是创建一个数据源。
       第2个连接需要导入数据的数据库,并建立好相对应的表。再分别用两个DataSource,adoquery,dbgrid。连接好久OK拉
       代码:
        adoquery1.Append;
      adoquery1.First;
       while not adoquery1.Eof do
       begin
        adoquery2.Append;
        adoquery2.fieldbyname('').AsString:=adoquery1.FieldByName('').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname(').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.FieldByName('').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.FieldByName(').AsString:=adoquery1.fieldbyname('').AsString;
        adoquery2.post;
        adoquery1.Next;
       end;
    这样做之能够导入一张,但是导入多张怎么写呢,请大虾帮忙解决下。
      

  9.   

    我的代码是我程序中给你截取的,不知道怎么不行了另外既然能导入一个文件了,那么关闭第一个连接,更换连接字符串,就可以再导入另外的了
    const connstr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties=Excel 8.0;Persist Security Info=False';
    我这个写法就是可以动态的根据文件名来更换连接字符串,打开不同的文件,是用Jet.OleDB的驱动设置ADO连接字符串,方便。用ODBC的话太麻烦了吧,你要每次操作不同的文件都配置ODBC数据源,ADO采用OLE驱动就不必了
      

  10.   

    恩  就是啊  通过odbc连接的  每导入一个不同的表都要去修改配置。这样做起很麻烦,但是在导入数据库中的时候还要手动创建表,这个也是一件很麻烦的事情 ,每张sheet的字段名也不一样,真的是很麻烦。我也想了很久了,项目经理说上周星期5交上去   到现在都还没做出来。
       to hanlin2004
         刚开始的时候我也用过jet引擎