procedure TFm_Main.Button6Click(Sender: TObject);
var
  sSql, xlspath , mdbpath: string;
begin
  if OpenDialog1.Execute  then
    xlspath := OpenDialog1.FileName;      //Excel路径
  mdbpath := extractfilepath(application.exename) + 'Data.mdb';
  if trim(xlspath) = ''  then
    exit;
  Fm_SWDJ.ADOC.Connected := False;
  try
    Fm_SWDJ.ADOC.ConnectionString :=
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
      mdbpath + ';Persist Security Info=False';
    Fm_SWDJ.ADOC.Connected := true;
    try
    ///
      adoquery1.Close;                                //////////////////////////////////////
      adoquery1.SQL.Clear;                            //            导入数据之前
      sSql := 'Delete * From 收文信息列表';           //            先清空数据库
      adoquery1.Parameters.Clear;                     //
      adoquery1.ParamCheck := false;                  //
      adoquery1.SQL.Text := sSql;                     //////////////////////////////////////
      adoquery1.Execsql;                              //////////////////////////////////////
      ///
      adoquery1.Close;                                //
      adoquery1.SQL.Clear;                            //////////////////////////////////////
      sSql :=
        'INSERT INTO  收文信息列表 ( 文件编号 , 标题 , 文号 , 制文单位 , 登记日期 , 文件类别 , 实体分类 , 页数 , 份数 , 备注)' +
      ' SELECT ' +
        ' 文件编号 , 标题 , 文号 , 制文单位 , 登记日期 , 文件类别 , 实体分类 , 页数 , 份数 , 备注 ' +
        ' FROM  [excel 8.0;database=' + xlspath + '].[Sheet1$]';
      adoquery1.Parameters.Clear;
      adoquery1.ParamCheck := false;
      adoquery1.SQL.Text := sSql;
      adoquery1.Execsql;
      MessageBox(GetActiveWindow(), '批量导入EXCEL成功!', '恭喜', MB_OK +
        MB_ICONWARNING);
      Fm_SWDJ.ADOD.Active := False;
      Fm_SWDJ.ADOD.Active := True;
    except
      MessageBox(GetActiveWindow(), '批量导入EXCEL失败!', '警告', MB_OK +
        MB_ICONWARNING);
    end;
  except
    MessageBox(GetActiveWindow(), '连接ACCESS失败!', '警告', MB_OK +
      MB_ICONWARNING);
  end;
end;

解决方案 »

  1.   

    自己顶自己!!!!就是图中这个 红色语句出错刚开始玩delphi,新手求指教!(PS:这个语句我前几次就可以完全实现,但是突然一下子就不行了,自己试了几天,还是不行,只有求教各位大神了)
      

  2.   

    错误提示找不到你的EXCEL表格中的SHEET啊
      

  3.   

    根据楼上说的猜测,Excel中的第一个Sheet的名字不是Sheet1,被改成其他字了。
      

  4.   

    不是呀,我的Sheet名字全部改为Sheet1了。以前是汉字,后来为了避免出错,全部换为 Sheet1.
      

  5.   

    好了,我试了一下,如果我用 excel 2003 就可以,但是用excel 2007就不行我想请问,前面语句中 “”Excel 8.0 “”表示什么意思呢?有哪位大神可以详细给我解释一下吗,谢谢了。
      

  6.   


    这个问题得找微软解释才解释得清楚,开发EXCEL之类的,最好手头上有一本微软提供的函数说明书、API、SDK等等的工具书,就是那种很浪费纸张,每本都厚得不行的那种
      

  7.   

    请把
    Provider=Microsoft.Jet.OLEDB.4.0
    改成
    provider=microsoft.ace.oledb.12.0
    试试