天天看點

Excel資料導入到Sql server 2000

   最近在做一個項目,客戶要求必須實作把他們的Excel資料導入到資料庫中。.對于一個菜鳥來說以前也沒做過這一方面,做這個畢竟很頭痛。無奈隻有在網上找資料了,搜了許多,菜鳥也試了幾個,還是不太理想,最後終于找到一個,加上自己的實踐和修改,最終實作了這個功能。現把它介紹如下,希望能給正在尋找此方面的朋友能有一定的幫助! 1.控件:openDialog(openDialog1),TExcelApplication(ExcelApplication1),TExcelWorkbook(ExcelWorkbook1),TExcelWorksheet(ExcelWorksheet1)和TADOTable(tblTa) 前提說明: 在sql server中建一個表,以對應excel中的資料,但是經過菜鳥實踐建表時也應該注意兩點,一是表中的字段必須有個id是自動增長的,否則等資料多時或資料中有空資料時容易出現錯誤:” 鍵列資訊不足或不正确。更新影響到多行”

    2.是表中的字段對應的類型也注意。字段當有小數點時,字段的類型應該為float,其他的字段類型最好同意用string.

   3 代碼詳解: procedure TForm1.Button1Click(Sender: TObject);  var       i,j:integer;       ExcelApplication1:TExcelApplication;//控件中有說明       ExcelWorksheet1:TExcelWorksheet;// 控件中有說明       ExcelWorkbook1:TExcelWorkbook;// 控件中有說明       filename:   string; begin     if opendialog1.Execute then      begin        opendialog1.DefaultExt:='xls';       try           ExcelApplication1:=TExcelApplication.Create(Application);           ExcelWorksheet1:=TExcelWorksheet.Create(Application);           ExcelWorkbook1:=TExcelWorkbook.Create(Application);             ExcelApplication1.Connect;         except           Application.Messagebox('Excel沒有安裝!',    'Hello',   MB_ICONERROR   +   mb_Ok);           Abort;         end;             Try                   ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(opendialog1.FileName,Emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,0));             ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);           ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1]   as   _worksheet);       Except           Exit;       end;       i:=2;//開始導入行數       //j :=100;//預設導入總行數       j := ExcelApplication1.Rows.Count;           try           tblTA.Open;   //要導入的表           while   i<=j   do             begin                 if   trim(ExcelWorksheet1.cells.item[i,1])<>''   then //這個是用于判斷某行是否為空                   begin                       tblTA.AppendRecord([                           ExcelWorksheet1.Cells.Item[i,1],/.//代表excel中第一行的資料                           ExcelWorksheet1.Cells.Item[i,2],/.//代表excel中第二行的資料                             ExcelWorksheet1.Cells.Item[i,3], // 代表excel中第三行的資料                               ExcelWorksheet1.Cells.Item[i,4], //代表excel中第四行的資料 .                           //ExcelWorksheet1.Cells.Item[i,5],.//………                           //ExcelWorksheet1.Cells.Item[i,6],//…………                           //ExcelWorksheet1.Cells.Item[i,7],.//………….                           //ExcelWorksheet1.Cells.Item[i,8],//………….                           //ExcelWorksheet1.Cells.Item[i,9],//…………..                           //ExcelWorksheet1.Cells.Item[i,10],// 代表excel中第十行的資料                           ExcelWorksheet1.Cells.Item[i,11]//第i行第3列.// 代表excel中第十一行的資料                           ]);                       end                   else                    Break;                  Inc(i);           end;       finally           tblTA.close;           tblTA.Open;           showMessage('資料導入完畢!');       end;             try           ExcelApplication1.Disconnect;           ExcelApplication1.Quit;           ExcelApplication1.Free;           ExcelWorksheet1.Free;           ExcelWorkbook1.Free;       except           showMessage('關閉出錯!');       end;    end; end;     4.心裡體會:   菜鳥以最笨的辦法,還是解決了問題,誰讓我笨呢,笨人隻有用最笨的辦法了,(*^__^*) 嘻嘻……,但無論如何還是實作了這個東東,心裡也是挺高興的.