找回密码
 立即注册
查看: 1227|回复: 0

Delphi如何导入excel数据

[复制链接]

6782

主题

8

回帖

2万

积分

管理员

积分
21777
发表于 2019-5-20 21:40:07 | 显示全部楼层 |阅读模式
/var
//i_fri:integer;
var
i:integer;

begin

if OpenDialog1.Execute then
   begin
   {dm.ADOQuery1.DisableControls;
   i_fri:=length(extractfilename(opendialog1.FileName));
dm.ADOCommand1.CommandText :='Insert XLImport3(卡号,工号,姓名,性别,部门,职位,入职日期,出生年月,学历,'+
'籍贯,民族,婚否,联系电话,基本工资,工资类别,上班类别,身高,体重,银行帐号,社保编号,户口地址,身份证ID)'+
   'select 卡号,工号,姓名,性别,部门,职位,入职日期,出生年月,学历,籍贯,民族,婚否,联系电话,基本工资,工资类别,'+
   '上班类别,身高,体重,银行帐号,社保编号,户口地址,身份证ID FROM OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',''Data Source='+opendialog1.FileName+';Extended Properties=Excel 8.0'')...['+copy(extractfilename(opendialog1.FileName),1,i_fri-4)+'$]';
   dm.ADOCommand1.Execute; }
       try
       //dm.ADOQuery1.DisableControls;
       dm.ADOConnection2.Connected:=false;
       dm.ADOConnection2.Provider:='Microsoft.Jet.OLEDB.4.0;Data Source='+OpenDialog1.FileName+';Extended Properties=Excel 8.0ersist Security Info=False';
       dm.ADOConnection2.Connected:=true;
       i:=length(extractfilename(opendialog1.FileName));//文件名总长度
       dm.ADOQuery16.Close;
       dm.ADOQuery16.SQL.Clear;
       dm.ADOQuery16.SQL.Add('select * from ['+copy(extractfilename(opendialog1.FileName),1,i-4)+'$]');
       dm.ADOQuery16.open;
       dm.ADOQuery16.first;
       suiprogressbar1.max:=dm.ADOQuery16.RecordCount;
       suiprogressbar1.Visible:=true;
       dm.ADOQuery22.Open;

       dm.ADOQuery1.Open;
       while not dm.ADOQuery16.eof do
         begin
         //以下代码防止有重复的记录录入到表中来
         dm.ADOQuery22.Close;
         dm.ADOQuery22.SQL.Clear;
         dm.ADOQuery22.SQL.Add('select * from  XLImport3 where 工号= '+QuotedStr(dm.ADOQuery16.Fieldbyname('工号').asstring));
         dm.ADOQuery22.Open;
         if dm.ADOQuery22.IsEmpty  then //如果没有发现有记录的话就录入记录到表中来
         begin

         dm.ADOQuery1.Append;
         dm.ADOQuery1.Fieldbyname('卡号').asstring:=dm.ADOQuery16.Fieldbyname('卡号').asstring ;
         dm.ADOQuery1.Fieldbyname('工号').asstring:=dm.ADOQuery16.Fieldbyname('工号').asstring ;
         dm.ADOQuery1.Fieldbyname('姓名').asstring:=dm.ADOQuery16.Fieldbyname('姓名').asstring;
         dm.ADOQuery1.Fieldbyname('性别').asstring:=dm.ADOQuery16.Fieldbyname('性别').asstring ;
         dm.ADOQuery1.Fieldbyname('部门').asstring:=dm.ADOQuery16.Fieldbyname('部门').asstring ;
         dm.ADOQuery1.Fieldbyname('职位').asstring:=dm.ADOQuery16.Fieldbyname('职位').asstring ;
         dm.ADOQuery1.Fieldbyname('入职日期').asstring:=dm.ADOQuery16.Fieldbyname('入职日期').asstring ;
         dm.ADOQuery1.Fieldbyname('出生年月').asstring:=dm.ADOQuery16.Fieldbyname('出生年月').asstring;
         dm.ADOQuery1.Fieldbyname('学历').asstring:=dm.ADOQuery16.Fieldbyname('学历').asstring ;
         dm.ADOQuery1.Fieldbyname('籍贯').asstring:=dm.ADOQuery16.Fieldbyname('籍贯').asstring;
         dm.ADOQuery1.Fieldbyname('民族').asstring:=dm.ADOQuery16.Fieldbyname('民族').asstring ;
         dm.ADOQuery1.Fieldbyname('婚否').asstring:=dm.ADOQuery16.Fieldbyname('婚否').asstring;
         dm.ADOQuery1.Fieldbyname('联系电话').asstring:=dm.ADOQuery16.Fieldbyname('联系电话').asstring;
         dm.ADOQuery1.Fieldbyname('基本工资').asstring:=dm.ADOQuery16.Fieldbyname('基本工资').asstring;
         dm.ADOQuery1.Fieldbyname('上班类别').asstring:=dm.ADOQuery16.Fieldbyname('上班类别').asstring;
         dm.ADOQuery1.Fieldbyname('身高').asstring:=dm.ADOQuery16.Fieldbyname('身高').asstring;
         dm.ADOQuery1.Fieldbyname('体重').asstring:=dm.ADOQuery16.Fieldbyname('体重').asstring ;
         dm.ADOQuery1.Fieldbyname('银行帐号').asstring:=dm.ADOQuery16.Fieldbyname('银行帐号').asstring ;
         dm.ADOQuery1.Fieldbyname('社保编号').asstring:=dm.ADOQuery16.Fieldbyname('社保编号').asstring;
         dm.ADOQuery1.Fieldbyname('户口地址').asstring:=dm.ADOQuery16.Fieldbyname('户口地址').asstring ;
         dm.ADOQuery1.Fieldbyname('身份证ID').asstring:=dm.ADOQuery16.Fieldbyname('身份证ID').asstring ;
         dm.ADOQuery1.Fieldbyname('工资类别').asstring:=dm.ADOQuery16.Fieldbyname('工资类别').asstring ;
         dm.ADOQuery1.post;
         end;
         dm.adoquery16.next; //下移一个记录
         suiprogressbar1.Position:= suiprogressbar1.Position+1; //过度条动一格
         end;

         dm.adoquery16.close;
         dm.ADOConnection2.Connected:=false;
         suiprogressbar1.Visible:=false;
         suiprogressbar1.Position:=0;
         DM.ADOCommand1.CommandText:='delete XLImport3 where 入职日期='''''; //清除入职日期为空的记录
         dm.ADOCommand1.Execute;

         DM.ADOCommand1.CommandText:='Update XLImport3 SET 是否已办厂证=''否'',是否离职=''否'',是否已转正=''否''where 数据日期 is null' ;
         dm.ADOCommand1.Execute;

   //FDOM(date())
   DM.ADOCommand1.CommandText:='Update XLImport3 SET 数据日期='+ QuotedStr(datetostr(FDOM(date())))+'where 数据日期 is null' ;
   dm.ADOCommand1.Execute;





   Application.messagebox('导入操作成功!','操作提示',0+64);
   dm.ADOQuery1.Close;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('select * from  XLImport3');
dm.ADOQuery1.Open;
// dm.ADOQuery1.EnableControls;

   except
       Application.messagebox('无效的数据文件,'+#13+'请你用EXCEL打开一次该文件'+#13+'然后在EXCEL中保存一次再试','错误提示',0+16);
       dm.ADOQuery16.Close;
       dm.ADOConnection2.Connected:=false;
   end;

end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表