帮帮手

解决方案 »

  1.   

    function ImportXls(FileName:string; destination: TDataSet;
              Flist:FFieldList;StartLine:integer=2):boolean;
    var
      msexcel:variant;
      i,j,ct,RowIndex,RowCount,maxCount,fieldCount:integer;
      Aindex:array of integer;
      AField:array of String;
      test,finalID,SameItem,Item_id:string;
      OPD:TOpenDialog;
    begin
      result:=false;
      if (filename='') or (not FileExists(filename)) then
      begin
        try
          OPD:=TOpenDialog.Create(nil);
          opd.Filter:='Excel文件|*.xls|所有文件|*.*';
          opd.DefaultExt:='*.xls';
          if OPD.Execute then
            filename:=OPD.FileName
          else
            filename:='';
        finally
          opd.Free;
        end;
      end;
      if filename<>'' then
      begin
      RowIndex:=StartLine;
      setlength(Aindex,0);
      setlength(AField,0);
      setlength(Aindex,length(Flist));
      setlength(AField,length(Flist));
      for i:=0 to length(Flist)-1 do
        begin
          Afield[i]:=Flist[i][0];
          Aindex[i]:=strtoint(Flist[i][1]);
        end;
        try
          begin
          msexcel:=createoleobject('excel.application');
          msexcel.workbooks.open(FileName);
          MSExcel.Visible:=False;
          maxCount:=MSExcel.ActiveSheet.UsedRange.Rows.Count+1-RowIndex;
          for i:=RowIndex to MSExcel.ActiveSheet.UsedRange.Rows.Count do
          begin
             with destination do
             begin
                insert;
                for j:=0 to Length(Aindex)-1 do
                begin
                  test:= MSExcel.Cells[i,Aindex[j]].Value;
                  Fieldvalues[AField[j]] :=test;
                 end;
             end;
          end;
          MSExcel.ActiveWorkBook.Close;
          MSExcel.Quit;
          Result:=true;
          end
        except
          Result:=false;;
        end;
      end;  
    end;
      

  2.   

    贴段代码给你看看~~~~~~
    这是把excel里的数据读去到数据集合中。