我现在在给给公司做的应用系统中实际遇到的情况!
需要把大量的EXCEL数据倒入到SQL SERVER 2000中(系统用的数据库),请问是否有这方面现成的控件或者有这方面的实现方法!请告诉我高分相送,实际开发用的请写的详细点或者告诉我详细资料的地址!谢谢!

解决方案 »

  1.   

    利用sql中的导入导出功能就能实现
      

  2.   

    1.将excel导成文本文件
    2.sql server有现成的工具导入文本文件
    或则
    编写程序将读取excel文件数据,进行整理后,插入sql server
      

  3.   

    chenquan(嘉威王子) 说具体点塞
      

  4.   


    insert into Pub_SettleStyle
     (cRPFlag,cSettleStyleCode,cSettleStyleID,cSubjectID,vcMemo,vcSettleStyleName) select temp.cRPFlag,temp.cSettleStyleCode,temp.cSettleStyleID,temp.cSubjectID,temp.vcMemo,temp.vcSettleStyleName from OPENROWSET('Microsoft.Jet.OLEDB.4.0','FileName';'admin';'',Pub_SettleStyle) As tempgo
      

  5.   

    給你關鍵的代碼,你參考一下
    var
      i, j, iLengthIndex, iGridRow: integer; //iGridRow---For Excel時Grid專用
      sFileName, sTmp, temp: string;  ExcelApp, MyWordBook: OleVariant; //For Excel
      iExcelCol         : Integer; //For Excel
      bError, bRun      : Boolean;    OpenHH.Filter := 'Excel檔(*.xls)|*.xls';
        if OpenHH.Execute then
        begin
          bRun := True;
          sFileName := Trim(OpenHH.FileName);
          if (sFileName = '') or (not FileExists(sFileName)) then Exit;
          try
            grdMain.ClearNormalCells;//grdMain:TAdvStringGrid or TStringGrid
            grdMain.RowCount := 2;
            grdMain.row := 1;
            iGridRow := 1;        try
              ExcelApp := CreateOLeObject('Excel.application');
              MyWordBook := CreateOLeObject('Excel.Sheet');
              MyWordBook := ExcelApp.WorkBooks.Open(sFileName);          BtnOpen.Enabled := False;
              //iExcelRow Excel文檔起始列
              for i := iExcelRow to 999999 do
              begin
                grdMain.Cells[0, iGridRow] := '*';
                grdMain.Cells[1, iGridRow] := IntToStr(iGridRow);
                //向Grid中賦值
                temp := Trim(MyWordBook.WorkSheets[1].Cells[i, 1].Value);
                if temp = '' then Break;
                //sDisplayCol 是否轉入的列
                for j := 0 to sDisplayCol.Count - 1 do
                begin
                  temp := Trim(MyWordBook.WorkSheets[1].Cells[i, 1].Value);
                  if temp = '' then Break;
                  //strExcelField[j] Excel轉入檔
                  iExcelCol := ConverExcelToSerial(strExcelField[j]);
                  //取相應列的值
                  sTmp := Trim(MyWordBook.WorkSheets[1].Cells[i, iExcelCol].Value);
                  //strLenth[j] 欄位長度
                  temp := trim(Copy(sTmp, 0, StrToInt(strLenth[j])));
                  //賦值給相應的列
                  grdMain.Cells[StrToInt(sDisplayCol[j]), iGridRow] := temp;
                end;
                if iGridRow > 1 then
                  grdMain.RowCount := grdMain.RowCount + 1;
                Inc(iGridRow);
                Application.ProcessMessages;
              end;
              ExcelApp.WorkBooks.Close;
              grdMain.Row := grdMain.RowCount - 1;
              grdMain.setfocus;
              BtnOK.Enabled := True;
              bError := False;
            except
              bError := True;
              //Application.MessageBox('Can Not Open xls files','',Mb_ok+Mb_IconStop);
              ExcelApp.WorkBooks.Close;
            end;
            ExcelApp := Unassigned;
            MyWordBook := Unassigned;
            Screen.Cursor := crDefault;
          except
            bError := True;
            ExcelApp := Unassigned;
            MyWordBook := Unassigned;
            Screen.Cursor := crDefault;
          end;
        end;
      

  6.   

    谢谢大家!前浪的方法好象和我想的有点接近!你是想通过SQL把EXCEL中的数据倒入到SQL SERVER 2000中是吧!你能系统的讲一下你的实现方法吗?通过DELPHI控制EXCEL方面的资料倒是不少,这可以到处找找,但是用EXCEL做数据表现层来操作数据方面的资料就不多了!我的想法是用EXCEL来录入或者就是按照库结构把EXCEL表做好再一次性的倒入数据库,这方便很多电脑操作水平底的人,只要按照表的格式录数据再通过程序来实现数据入库,这不是个2全其美的办法吗?
      

  7.   

    可以用SQL SERVER 工具,也可以程序实现,网上有很多现成的例子
      

  8.   

    就执行一个SQL语句就可以了啊
      

  9.   

    如果,数据库的表结构相同的话,可利用sql的数据得导入功能 直接导入
    若,不同,可利用sql语句来实现
      

  10.   

    用SQLSERVER的DTS,也就是数据导入,导出系统,很简单的,你看看,自己摸摸很快就可以上手的,有什么问题发消息给我·!!!!
      

  11.   

    可以直接用SQLServer2000提供的方法来导入数据
      

  12.   

    我不是说了么??用DTS!!!肯定行的!!我门单位系统升级就是我导的!!!!
      

  13.   

    我知道用SQL的DTS工具但是我不能一个一个用手去倒吧兄弟们我想的是在程序里面实现,让用户自己点按纽来倒入我只需要告诉他们规范的EXCEL格式就行!是在程序里如何实现,不是手动!要执行语句的话能直接把EXCEL当表来查询吗?用DTS又如何在程序里面写相应的代码呢?
      

  14.   

    靠!再简单不过了。用两个adoquery分别连接excel和sqlsever,一个读,一个写,不就搞定了!
      

  15.   

    强烈建议用sql 的DTS服务,可以通过存储过程和任务计划调用。
    简单、好用、快速、直接、易扩展。。
    真乃编程、维护必备良药!