参考一下这个 uses Excel2000这个单元
function LoadExcel: Boolean;
var
  RangeMatrix: Variant;
  OpenDialog1: TOpenDialog;
  iRE: integer;
  i: Integer;
  A,B,C: String;
  MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;
begin
  Result := false;
  OpenDialog1:=TOpenDialog.Create(nil);
  try
    MsExcel := CreateOleObject('Excel.Application');
    //记得在uses中引入文件EXCEL2000这个单元
    OpenDialog1.FileName:='*.csv;*.xls';
    if not OpenDialog1.Execute then exit;
    try
      MsExcelWorkBook := msExcel.Workbooks.Open(OpenDialog1.FileName);
      MsExcelWorkSheet := msExcel.Worksheets.Item[1];
    except
      Application.Messagebox('连接Excel失败,请重试!','错误提示',0);
      Result := false;
      exit;
    end;
    Application.ProcessMessages;
    try
      for IRE := 2 to MsExcelWorkSheet.Rows.Count do
      begin
          A := Trim(MsExcelWorkSheet.Range['A'+Inttostr(IRE)].Value);
          .....
          //将数据存入数据库
           ......
      end;
    except
      Application.Messagebox('导入信息出错,请重试!','提示',MB_ICONERROR);
      Result := false;
      exit;
    end;
    Result := true;
  finally
    MsExcel.WorkBooks.Close;
    OpenDialog1.Free;
    MsExcel.Quit;
    Application.ProcessMessages;
  end;
end;

解决方案 »

  1.   

    最简单的方式就是使用ado连接excel,然后将dataset的内容插入到access数据库里面
      

  2.   

    用oledb连接excel,select语句加条件把空行去掉。
      

  3.   

    连接字符串
    http://www.connectionstrings.com/excel
      

  4.   


    数据已经读取出来了,向数据库insert你不会吗?
          for i := 2 to MsExcelWorkSheet.Rows.Count do
          begin
            if trim(MsExcelWorkSheet.Range['A' + IntToStr(i)].Value)='' then break;
            showmessage(trim(MsExcelWorkSheet.Range['A' + IntToStr(i)].Value));
            a:= trim(MsExcelWorkSheet.Range['A' + IntToStr(i)].Value);
            with AdoQuery1 do
            begin
              close;
              sql.text := ' Insert into Test(iusername,iusernumber,icardno,iduty,'+
                          ' isex,iwork,iaddress,ipostnumber,itel,ire) values('+
                          ' :iusername,:iusernumber,:icardno,:iduty,'+
                          ' :isex,:iwork,:iaddress,:ipostnumber,:itel,:ire)';
              Parameters.ParamByName('iusername').Value := a;
              Parameters.ParamByName('iusernumber').Value := trim(MsExcelWorkSheet.Range['B' + IntToStr(i)].Value);
              Parameters.ParamByName('icardno').Value := trim(MsExcelWorkSheet.Range['C' + IntToStr(i)].Value);
              Parameters.ParamByName('iduty').Value := trim(MsExcelWorkSheet.Range['D' + IntToStr(i)].Value);
              Parameters.ParamByName('isex').Value := trim(MsExcelWorkSheet.Range['E' + IntToStr(i)].Value);
              Parameters.ParamByName('iwork').Value := trim(MsExcelWorkSheet.Range['F' + IntToStr(i)].Value);
              Parameters.ParamByName('iaddress').Value := trim(MsExcelWorkSheet.Range['G' + IntToStr(i)].Value);
              Parameters.ParamByName('ipostnumber').Value := trim(MsExcelWorkSheet.Range['H' + IntToStr(i)].Value);
              Parameters.ParamByName('itel').Value := trim(MsExcelWorkSheet.Range['I' + IntToStr(i)].Value);
              Parameters.ParamByName('ire').Value := trim(MsExcelWorkSheet.Range['J' + IntToStr(i)].Value);
              ExecSql;
            end;
          end;