天天看点

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.心里体会:   菜鸟以最笨的办法,还是解决了问题,谁让我笨呢,笨人只有用最笨的办法了,(*^__^*) 嘻嘻……,但无论如何还是实现了这个东东,心里也是挺高兴的.