我想将硬盘中特定文件夹中的几个excel表中的数据分别导入到几个数据库表中!用delphi语言实现!
------解决方案--------------------
在论坛里搜索“delphi excel”
------解决方案--------------------
这个不是很难,只要你excel命名规范
------解决方案--------------------
这个用 ADO 连接 Excel 即可办到。假设你的 Excel 里表的列定义与数据库里的表的列定义一致,就更好办了。以下的代码,示范如何从一个 Excel 文件提取表名,然后用 AODTable 打开某个表。如果要导出数据并插入到 DB,只需遍历 Excel 表记录,在 DB 做插入记录操作即可。
procedure Tcl2form.conntable(fName:string);
Var
ConnStr: String;
StrList:TSTringList;
begin
ADOConnection1.Close;
ADOTable1.Active := False;
ConnStr := ConnStr + 'Provider=Microsoft.Jet.OLEDB.4.0;User Source=';
ConnStr := ConnStr + fName;
ConnStr := ConnStr + ';Mode=ReadWrite;Extended Properties=Excel 8.0;';
ConnStr := ConnStr + 'Jet OLEDB:System database="";';
ConnStr := ConnStr + 'Jet OLEDB:Registry Path="";';
ConnStr := ConnStr + 'Jet OLEDB:Database Password="";';
ConnStr := ConnStr + 'Jet OLEDB:Engine Type=35;';
ConnStr := ConnStr + 'Jet OLEDB:Database Locking Mode=0;';
ConnStr := ConnStr + 'Jet OLEDB:Global Partial Bulk Ops=2;';
ConnStr := ConnStr + 'Jet OLEDB:Global Bulk Transaction_s=1;';
ConnStr := ConnStr + 'Jet OLEDB:New Database Password="";';
ConnStr := ConnStr + 'Jet OLEDB:Create System Database=False;';
ConnStr := ConnStr + 'Jet OLEDB:Encrypt Database=False;';
ConnStr := ConnStr + 'Jet OLEDB:Don''t Copy Locale on Compact=False;';
ConnStr := ConnStr + 'Jet OLEDB:Compact Without Replica Repair=False;';
ConnStr := ConnStr + 'Jet OLEDB:SFP=False';
ADOConnection1.ConnectionString := ConnStr;
ADOConnection1.LoginPrompt := False;
ADOConnection1.Connected := true; //连接excel;
StrList:=TSTringlist.Create;
ADOConnection1.GetTableNames(StrList,false);----目前发现如果EXCEL的表名是全部中文的话会获取不到,郁闷ING!还没解决!
//showmessage(strlist[0]);
ADOTable1.TableName := '[' + strlist[0] + ']'; //Edit1.Text 是excel的一个表名
ADOTable1.Active := true; //打开一个表;
STrlist.Free;
end;