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;
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;
这个问题得找微软解释才解释得清楚,开发EXCEL之类的,最好手头上有一本微软提供的函数说明书、API、SDK等等的工具书,就是那种很浪费纸张,每本都厚得不行的那种
Provider=Microsoft.Jet.OLEDB.4.0
改成
provider=microsoft.ace.oledb.12.0
试试