到入到sqlserver.
procedure Tbrowse.N14Click(Sender: TObject);
var xlapplication,sheet:variant;
    I,row,i1,ls_curID:integer;
    col,k:integer;
    qry_temp:Tquery;
    fields:array[0..25] of string;
    standard_id,tmp_position:string;
    formProgress1:TformProgress1;
    is_sqlstring,ls_allfield:string;
beginqry_temp:=Tquery.Create(nil);
qry_temp.databasename:='Zjdb';
try
with Qry_temp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select max(校友编号) As maxID from personal_info');
    Open;
    First;
end;
ls_allfield:=GetTableFields('personal_info');
ls_curID:=strtoint(Trim(Qry_temp.FieldByName('maxID').AsString));
with query_photo do
 begin
close;
sql.clear;
sql.add('select 校友编号 from person_photo');
open;
end;
if opendialog2.Execute then  //readxls
begin
    try
       xlapplication:=createoleobject('Excel.application');
       xlapplication.visible:=false;
    except
       application.messagebox('您的系统没有安装Excel,请安装后再使用本功能!','读取文件失败',mb_iconerror+mb_ok);
       xlapplication.free;
       abort;
    end;
try
      try
            xlapplication.workbooks.open(opendialog2.FileName);
      except
            application.MessageBox('打开文件失败!','',mb_iconerror+mb_ok);
      end;
if InputQuery('输入框', '请输入Excel工作表所在页数             ',tmp_position)=false then
     exit
else
begin
      sheet:=xlapplication.workbooks[1].worksheets[strtoint(tmp_position)];
      if trim(VarAsType(sheet.cells[1,1],varstring))<>'校友编号'  then
      begin
      MessageBox(Application.Handle,'第一行必须为校友编号!','系统提示',MB_ICONINFORMATION or MB_OK);
      abort;
      end;
      col:=sheet.usedRange.columns.count;
      is_sqlstring:='';
      for  k:=1 to col do
      begin
      fields[k-1]:=trim(VarAsType(sheet.cells[1,k],varstring));
      is_sqlstring:=is_sqlstring+','+fields[k-1];
      end;
      is_sqlstring:=Copy(is_sqlstring,2,Length(is_sqlstring));
      /////////////判断Excel表中的字段名是否正确
      for K:=1 to col do
      begin
      if pos(fields[k-1],ls_allfield)=0 then
      begin
      showmessage('您输入的字段名:'+fields[k-1]+'. 不存在,请检查!');
      abort;
      end;
      end;
      //////////////////////////////////////////
with query_person do
begin
close;
sql.clear;
sql.add('select '+ is_sqlstring+' from personal_info');
//showmessage(sql.text);
open;
end;
      I := sheet.usedRange.rows.count;
      Application.CreateForm(Tformprogress1, formprogress1);
      formprogress1.show;
      row:=2;
      showmessage(VarAsType(sheet.cells[2,1],varstring));
if ls_curID<strtoint(VarAsType(sheet.cells[2,1],varstring)) then
begin
      while VarAsType(sheet.cells[row,1],varstring)<>'' do
          begin
       // 如果编号没有重复,则提交到数据库
        standard_id:=copy('00000000',1,8-length(trim(VarAsType(sheet.cells[row,1],varstring))))+VarAsType(sheet.cells[row,1],varstring);
                query_person.Insert;
                query_photo.Insert;
                query_person.FieldByName('校友编号').asstring:=standard_id;
                query_photo.FieldByName('校友编号').asstring:=standard_id;
                 for k:=2 to col do
        query_person.fieldbyname(fields[k-1]).asstring:=trim(VarAsType(sheet.cells[row,k],varstring));
                formProgress1.ProgressBar.Position:=Trunc((row*100)/I);
                inc(row);
                formProgress1.Refresh;
                end;
                query_person.ApplyUpdates;
                query_photo.ApplyUpdates;
                formProgress1.hide;
                formProgress1.Free;
                MessageBox(Application.Handle,'数据导入完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
end
else
begin
showmessage('您输入最小的校友编号必须大于'+inttostr(ls_curid)+'!');
exit;
end;
end;
finally
         xlapplication.displayalerts:=false;
         xlapplication.workbooks.close;
         xlapplication.quit;
end;
end;
finally
qry_temp.Destroy;
end;
end;