想做一个导入小程序,就是把记事本或者EXCEL里的数据导入到SQL数据库表里,
要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是
谁有现成的代码发一份,100分送上!!!

解决方案 »

  1.   

    想做一个导入小程序,就是把记事本或者EXCEL里的数据导入到SQL数据库表里, 
    要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是StringGrid1, 谁有现成的代码发一份,100分送上!!! 
      

  2.   

    将excel中数据导入到数据库中,工作时用到的,仅作参考,目的是把Excel中指定的列的数据导入到表中,
    至于在DBGRID中显示,你可以加些控件在导入之后显示.
    procedure TfrmCX_KHHKJH.btnDRHKJHClick(Sender: TObject);
    var
      MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;
      sFileName, sFile: String;
      sKHID, sKHMC, sHKJH, sBZ: string;
      sHKSJ, sFKSJ: string;
      iItem, iRows, i: Integer;
      iKHID, iKHMC, iHKJH, iHKSJ, iFKSJ, iBZ: Integer;
    begin
      //打开Excel文件
      if dlgOpenFile.Execute then
        sFileName := dlgOpenFile.FileName
      else
        Exit;
      //创建Excel应用程序
      MsExcel := CreateOleObject('Excel.Application');
      try
        MsExcelWorkBook := MsExcel.WorkBooks.Open(sFileName);
        sFile := ExtractFileName(sFileName);
        for iItem := 1 to 1 do
        begin
          MsExcelWorkSheet := MsExcel.WorkSheets[iItem];
          iRows := MsExcelWorkSheet.UsedRange.Rows.Count;//统计数据条数
          iKHID := 0;
          iKHMC := 0;
          iHKJH := 0;
          iHKSJ := 0;
          iFKSJ := 0;
          iBZ := 0;
          //判断文件的合法性
          for i := 1 to 6 do
          begin        
            if Pos('客户代码',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
              iKHID := i;
            if Pos('客户名称',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
              iKHMC := i;
            if Pos('还款计划',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
              iHKJH := i;
            if Pos('计划还款时间',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
              iHKSJ := i;
            if Pos('反馈时间',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
              iFKSJ := i;
            if Pos('备注',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
              iBZ := i;
          end;
          if IsZero(iKHID*iKHMC*iHKSJ*iHKJH*iFKSJ*iBZ) then
          begin
            ShoeMessage('格式不正确,导入失败!');
            if not VarIsEmpty(MsExcel) then
              MsExcel.Quit;
            Exit;
          end;
          //开始导入数据到U_KHHKJH表
          for i := 2 to iRows do
          begin
            sKHID := MsExcelWorkSheet.Range[RangeAZ(iKHID)+inttostr(i)].Value;
            sKHMC := MsExcelWorkSheet.Range[RangeAZ(iKHMC)+inttostr(i)].Value;
            sHKJH := MsExcelWorkSheet.Range[RangeAZ(iHKJH)+inttostr(i)].Value;
            sHKSJ := MsExcelWorkSheet.Range[RangeAZ(iHKSJ)+inttostr(i)].Value;
            sFKSJ := MsExcelWorkSheet.Range[RangeAZ(iFKSJ)+inttostr(i)].Value;
            sBZ := MsExcelWorkSheet.Range[RangeAZ(iBZ)+inttostr(i)].Value;
            if Trim(sKHID) <> '' then
            begin
              qryTool.Close;
              qryTool.SQL.Clear;
              qryTool.SQL.Add('insert into U_KHHKJH( ');
              qryTool.SQL.Add('  U_KHHKJH_ID, U_KHHKJH_KHID, U_KHHKJH_KHMC, ');
              qryTool.SQL.Add('  U_KHHKJH_HKJH, U_KHHKJH_HKRQ, U_KHHKJH_FKSJ, ');
              qryTool.SQL.Add('  U_KHHKJH_BZ) ');
              qryTool.SQL.Add('values( ');
              qryTool.SQL.Add('  :pID, :pKHID, :pKHMC, ');
              qryTool.SQL.Add('  :pHKJH, convert(datetime,:pHKRQ), :pFKSJ, ');
              qryTool.SQL.Add('  :pBZ) ');
              qryTool.ParamByName('pID').AsFloat := GetMaxID;
              qryTool.ParamByName('pKHID').AsString := sKHID;
              qryTool.ParamByName('pKHMC').AsString := sKHMC;
              qryTool.ParamByName('pHKJH').AsString := sHKJH;
              qryTool.ParamByName('pHKRQ').AsString := sHKSJ;
              qryTool.ParamByName('pFKSJ').AsString := sFKSJ;
              qryTool.ParamByName('pBZ').AsString := sBZ;
              qryTool.ExecSQL;
            end;
          end;
        end;
        ShoeMessage('导入完毕!');
        if not VarIsEmpty(MsExcel) then
          MsExcel.Quit;
        Run;
      except on E: Exception do
        begin
          if not VarIsEmpty(MsExcel) then
            MsExcel.Quit;
          ShoeMessage('导入失败!'+E.Message);
          Exit;
        end;
      end;
    end;
      

  3.   


    其中的“Run”就是导入之后把表U_KHHKJH查询出来在DBGRID中显示的过程,比较简单,所以没有写!
      

  4.   

    从文本或excel导入数据到sqlserver完全可由SQL实现,参考:
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
      

  5.   


    我就是想用程序实现,因为还要进行数据处理,处理后的数据还要导EXCEL表格出来,所以不能由SQL直接导入.
      

  6.   

    用StringGrid吧。相对能好处理些。