先用f1book打开一个excel文件到窗体中,然后有选择的把excel中的某些列(比如上面有A,B,C...等等的列标志)导入到sqlserver2000的某一个表中去,应该怎么做啊??小弟在此多谢了!!最好能有点代码

解决方案 »

  1.   

    delphi 不会用.
    帮不上.
      

  2.   

    ////////////////////////////////////////////////////////////////////
    //相关说明:                                                       //
    //  EApp为EXCEL对象                                               //
    //  EBook为EXCEL文件对象                                          //
    //  ESheet为EXCEL文件页面对象                                     //
    //  EBook.Worksheets.Count                 描述页数               //
    //  EBook.Worksheets[页] as _Worksheet     描述指定页             //
    //  ESheet.UsedRange[LocID].Columns.Count  描述当前页列数         //
    //  ESheet.UsedRange[LocID].Rows.Count     描述当前页行数         //
    //  ESheet.Cells.Item[行,列].Value         描述当前页指定单元格值 //
    ////////////////////////////////////////////////////////////////////  function GetXLS(aFile:String):TStrings;                     //检索EXCEL文件.
      var EApp: TExcelApplication;
          EBook: TExcelWorkbook;
          ESheet: TExcelWorksheet;
          LocID:LCid;
         // ExcelApp:Variant;
          reStr:TStrings;
          i,j,s:Integer;
          tmpStr:String;
      begin
        reStr:=TStringList.Create;
        tmpStr:='';
        LocID:=GetUserDefaultLCID;
        //LocID:=0;
        EApp:=TExcelApplication.Create(nil);
        EBook:=TExcelWorkbook.Create(nil);
        ESheet:=TExcelWorksheet.Create(nil);
        Try
          Try
            Try
              EApp.Connect;
              EApp.Visible[LocID]:=False;
            Except
                 //不做处理.
                LogDataList.Add('***警告***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时,EXCEL OLE对象出现异常,已忽略!');
            end;
            EApp.Workbooks.Open(aFile,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,LocID);
            EBook.ConnectTo(EApp.Workbooks.Item[1] as _Workbook);
            //EBook.ConnectTo(EApp.Workbooks.Open(aFile,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,LocID) as _Workbook);
          Except
            //EApp.Quit;                           //出问题再次尝试连接
            EApp.Disconnect;
            EApp.Free;
            LogDataList.Add('***警告***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时,EXCEL OLE对象连接异常,已中断重新连接!');
            Try
              EApp:=TExcelApplication.Create(nil);     //重构连接.
              LocID:=GetUserDefaultLCID;
              EApp.Connect;
              EApp.Visible[LocID]:=False;
              EApp.Workbooks.Open(aFile,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,LocID);
              EBook.ConnectTo(EApp.Workbooks.Item[1] as _Workbook);
            Except                               //再次发生错误,则退出.
              LogDataList.Add('***错误***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时出现严重错误:被调用的对象已与其客户断开连接,已跳过!');
              MessageBox(Application.Handle,PChar('在提取:'+aFile+'文件时出错,单击确认跳过!'),'错误',MB_ICONERROR+MB_OK);
              Result:=reStr;
              Exit;
            end;
          end;
          for s:=1 to EBook.Worksheets.Count do begin
            ESheet.ConnectTo(EBook.Worksheets[s] as _Worksheet);             //设定指定页
            MainFrm.RefInit(ESheet.UsedRange[LocID].Rows.Count*ESheet.UsedRange[LocID].Columns.Count);
            for i:=1 to ESheet.UsedRange[LocID].Rows.Count do               //循环行
              for j:=1 to ESheet.UsedRange[LocID].Columns.Count do begin    //循环列
                if StopFlag then begin
                  Result:=reStr;
                  MainFrm.RefInitB;
                  Exit;
                end;
                
                tmpStr:=IsPhone(ESheet.Cells.Item[i,j].Value);
                if tmpStr<>'' then begin
                  //reStr.Add(aStr);
                  MainFrm.RefSystemA(tmpStr);
                end;
              end;
            ESheet.Disconnect;
          end;    Except
          ON E:Exception DO LogDataList.Add('***错误***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时,读取单元格出现错误:'+E.Message+',已跳过!');
          //ON E:Exception DO ShowMessage(E.Message);
        end;
        ESheet.Disconnect;
        EBook.Disconnect;
        EApp.Quit;
        EApp.Disconnect;
        Result:=reStr;
        reStr.Free;
      end;
    //这是我的遍历XLS文件的方法,应该对你有用吧,取指定行列也可以的.呵呵.
      

  3.   

    这个比较简单吧。
    只要先读取选中数据,建立SQL SERVER 数据连接,生成SQL建表脚本,创建一个新的数据表,然后INSERT 数据不就可以了吗?