Delphi7 将Excel导入数据库

这是我第一次写博客,他将会记录我学习中遇到的困难与解决办法,也是证明我成长的见证者。(Butter Fly)

我也经常看别人的博客,有的真是看不懂,不是写的不好,写的真是太简洁了。我会尽量写清楚,谢谢。

思路

  1. 读取Excel文件
  2. 将Excel每列与字段一一对应
  3. 执行sql

插入控件

  1. TOpenDialog (打开文件的控件)

源码

procedure TMain.RzBitBtn4Click(Sender: TObject);
const
  BeginRow=1;  //   lie
  BeginClo=2;  //   hang
var
  iRE:Integer;
  iRow,iCol:Integer;
  MsExcel,MsExcelWorkBook,MsExcelWorkSheet:Variant;
  sqlstr1,sqlstr2:string;
  sql1,sql2,sql3:string;
  a,b,c,d,e,f,g,h,i,j,k,l,m:string;
  begin
    try
      dlgOpen1.FileName:='*.xls';
      if not dlgOpen1.Execute then
      begin
        Exit;
      end;

      if ExtractFileExt(dlgOpen1.FileName) <> '.xls' then
      begin
        MessageBox(0,'请选择正确的excel文件',PChar('提示'),MB_OK or MB_ICONWARNING);
        Exit;
      end;

      MsExcel:=CreateOleObject('Excel.application');
      MsExcel.Visible := True;
      MsExcelWorkBook := MsExcel.WorkBooks.Open(dlgOpen1.FileName);

    except
      Exit;
    end;

    Try
      Application.ProcessMessages;//防止进程阻塞
      iRow := BeginRow;
      iCol := BeginClo;
      
      while  trim(MsExcel.WorkSheets['sheet1'].cells[iCol,iRow].value)<> '' do
      begin
        
        b := Trim(MsExcel.worksheets[1].cells[ICol,iRow].value);  //  卡号
        c := Trim(MsExcel.worksheets[1].cells[ICol,iRow+1].value);//   姓名
        d := Trim(MsExcel.worksheets[1].cells[ICol,iRow+2].value);//   姓名助记码
        e := Trim(MsExcel.worksheets[1].cells[ICol,iRow+3].value);//   性别
        f := Trim(MsExcel.worksheets[1].cells[ICol,iRow+4].value);//   出生日期
        g := Trim(MsExcel.worksheets[1].cells[ICol,iRow+5].value);//   年龄
        h := Trim(MsExcel.worksheets[1].cells[ICol,iRow+6].value);//   身份证号
        i := Trim(MsExcel.worksheets[1].cells[ICol,iRow+7].value);//   联系方式
        j := Trim(MsExcel.worksheets[1].cells[ICol,iRow+8].value);//   诊疗费用
        k := Trim(MsExcel.worksheets[1].cells[ICol,iRow+9].value);//   监护人姓名
        l := Trim(MsExcel.worksheets[1].cells[ICol,iRow+10].value);//  监护人身份证号
        m := Trim(MsExcel.worksheets[1].cells[ICol,iRow+11].value);//  监护人联系方式

        sql1 :='insert into MEDICAL_EXPENSES_TABLE (ME_ID,MET_ID,MET_NAME,MET_NAME_MNEMONIC,MET_SEX,MET_BIR,MET_AGE,MET_NUM,MET_PHONE,MET_SUM,MET_US_SUM,';//诊疗费用,已使用
        sql1 :=sql1 +'MET_USABLE_SUM,MET_GUARDIAN_NAME,MET_GUARDIAN_NUM,MET_GUARDIAN_PHONE,MET_TIME,UT_ID) values';
        sql1 := sql1 +' ('''+b+''','''+c+''','''+d+''','''+e+''',to_date('''+f+''',''yyyy/mm/dd''),'''+g+''','''+h+''','''+i+''','''+j+''',';
        sql1 := sql1 +''''+'0'+''','''+j+''','''+k+''','''+l+''','''+m+''',sysdate,'''+user_name+''')';
        Data.sql_insert(sql1);//这个是我在别的单元写的执行生sql语句的方法
        iCol:=iCol+1;
      end;
      MsExcel.quit;
    except
      MessageBox(Self.Handle,'数据导入失败!','系统提示',0);
      MsExcel.quit;
      Exit
    end;

    MessageBox(Self.Handle,'数据导入成功!','系统提示',0);
    
  end;

结束语

感觉还是差点意思,有问题的可以下面留言,(#.#)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值