excel里堆着有2-3种格式的清单表
................................
a市的xx清单
 xi1   xi2    xi3    xi4
  0     0      0       0
a市的000清单
 bx1    bx2   bx3    bx4    bx5
  0     0      0       0     0
................................
导入到数据库相应的表中,如何操作请高手指点思路或者方法。
对于单个表的大家用一个sql语句就可以了,象这种多个表堆在一起的怎么导??/?

解决方案 »

  1.   

    调用存储过程好点,下面是从EXCEL导入到SQL SERVER2000的,你改一下就可SQL SERVER2000导出到EXCEL:CREATE PROCEDURE PROCtoExcel 
    @EXN varchar(250)
     AS
    --   SET ANSI_NULLS ON 
    --   SET ANSI_WARNINGS ON
       delete from BExcel
       select * into #temp1 from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\Excel2005\28.xls";User ID=Admin;Password=;Extended properties=Excel 5.0;Persist Security Info=false')...[sheet1$]
       insert into BExcel(orderNO,ProductNO,ProductName,specification,Unit,Quantity,finished,Re)  select 序号 as orderNO,货号 as ProductNO,品名 as ProductName,规格 as specification,单位 as Unit,数量 as Quantity,完成 as finished,备注 as Re from #temp1
       select orderNO,ProductNO,ProductName,specification,Unit,Quantity,finished,Re from BExcel
    GO
      

  2.   

    to:darkliu
    怎么1个1个导?如何定位表之间的区别和记录数
      

  3.   

    我以前的一个程序: var
      v: Variant;
      Sheet: Variant;......  path:=ExtractFilePath(Application.ExeName);
      v.WorkBooks.Open(path+'\transport.xls',0,false,1,'darkliu$liutao'); //打开计算模型
      Sheet:=v.WorkBooks[1].WorkSheets[9];
      Sheet.Cells[5,2]:=strtofloat(distanceEdit.Text); 
    with mainForm.single_Table do    //计算结果输入数据库表2
       begin
       for j:=0 to 1 do
       begin
         Append;
         fieldbyname('货物名称').AsString:=nameEdit.text;
         fieldbyname('类别').AsString:=x[j];
         for i:=2 to 4 do
         fields[i].AsString:=Sheet.Cells[j+42,i].text;
         for i:=5 to 6 do
         fields[i].AsString:=Sheet.Cells[j+42,i+1].text;
       end;
       for j:=2 to 9 do
       begin
         Append;
         fieldbyname('货物名称').AsString:=nameEdit.text;
         fieldbyname('类别').AsString:=x[j];
         for i:=2 to 4 do
         fields[i].AsString:=Sheet.Cells[j+43,i].text;
         for i:=5 to 6 do
         fields[i].AsString:=Sheet.Cells[j+43,i+1].text;
       end;
       post;
       refresh;
       end;
       v.WorkBooks[1].save;        //保存、退出excel模型
       v.WorkBooks[1].close;
       v.quit;
       v:=Unassigned;
      

  4.   

    掉了一句
    v:=CreateOleObject('Excel.Application');
      

  5.   

    看是什么数据库,可以考虑用ADO,速度极快
      

  6.   

    顺便问一下fontain我现在就用ado导表呢,别人告诉我用insert()方法,可是这样的话每个表的字段要全部写进去吧,然后再导数据,是这样么?疑惑,没找到方法呢
      

  7.   

    with TAdoConnection.Create(self) do 
    try
      ConnectionString:='...';
      Open;
      Execute('select * into dddd from [excel 8.0;data source=book1.xls].aaaa';
      Close;
    finally
      free;
    end;
    我记得是这么写的,不过没调试