各位老师:关于把excel 导入到 sql server2000相应的表 做一个学生信息管理;班主任把新生的名册按一定格式放在Excel 文件, 字段"学号,专业,班级,姓名...",
如何通过 delphi 的界面 上一个按键编程把Excel 文件中的数据导入到 sql server2000中呢.
如何通过 delphi 的界面 上一个按键编程把Excel 文件中的数据导入到 sql server2000中呢.
解决方案 »
- 如何用DELPHI的正则,找出项目有所有.pas文件里的中文 ?
- 求教 :怎麼讓水平滾動條居中
- delphi6.0报表显示格式问题,分不够再加,在线等!!!!!!!
- 请问TIdFTP用TIOHandlerThrottle如何限制速度?
- 简单问题,字符串我要获取AAA后的部分应该怎么做?字符串: .... AAA 123 ....
- 如何得到表yy的字段名称?
- 如何在word中选择表格并合并?
- 求delphi7.0的正式版下载地址(来者给分)
- delphi2010安装CoolControls的求助
- 请问sql语句中AVG的返回值如何取得???
- [散分]祝贺Documentation Insight集成到了Delphi XE2
- 类中的dynamic,abstract和virtual有什么区别?
一个连接excel,一个连接sql,然后就和操作一般数据库一样了
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=c:\ee.xls',真能搞定吗,我希望在这里给答案的话,要真诚,共同进步。
一个连接excel,一个连接sql//这句话还有解释吗
然后就和操作一般数据库一样了//操作一般数据库还要在这里一行行写吗
excel数据源的名称要动态变化的,不能写死的,你只需要改变excel的路径,然后组织好连接字符串就可以了在两个数据集上导数据,最简单的办法就是,逐条导入
qSQL,qExcel两个数据集,假设都已连接好,并查询出数据
while qExcel.Eof do
begin qSQL.Append;
qSQL.FieldByName('字段').AsString := qExcel.FieldByName('字段').AsString;
.
.
.
qSQL.Post;
qExcel.Next;
end;
就好象在工资表中计算税金后写到表的税金字段,循环写不进,只一条按一下按钮的写了,太笨了,不好意思,还请您多赐教.
你只需要把Data Source=后的内容作为一个变量就可以了
x:string;
begin
OpenDialog1.Execute;
edit2.Text:=opendialog1.FileName;
x:=COPY(edit2.Text,length(trim(edit2.Text))-3,4);//指定excel路径
if X='.xls' then
begin
with adoquery1 do
begin
Active:=false;
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+edit2.Text+';Mode=Share Deny None;Extended Properties=Excel 8.0;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";';
ConnectionString:=ConnectionString+'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;';
ConnectionString:=ConnectionString+' OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don#39t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
Close;
SQL.Clear;
SQL.Add('select * from [Sheet1$]');
ExecSQL;
Open;
end;
end
写不进去的具体是什么表现,报错吗,是不是qExcel到了最后了,qExcel.First先
ADODataSet1.CommandText:='select * from tb';
ADODataSet1.Open;
ADODataSet1.DisableControls;
try
ADOQuery1.First;
while not (ADOQuery1.Eof) do
begin
ADODataSet1.Insert;
ADODataSet1.FieldByName('字段').AsString:=trim(ADOQuery1.fields[0].AsString);
ADODataSet1.FieldByName('字段').AsString:=trim(ADOQuery1.fields[1].AsString);
ADODataSet1.FieldByName('字段').AsString:=trim(ADOQuery1.fields[2].AsString);
ADODataSet1.FieldByName('字段').AsString:=trim(ADOQuery1.fields[3].AsString);
ADODataSet1.FieldByName('字段').AsString:=trim(ADOQuery1.fields[4].AsString);
ADODataSet1.FieldByName('字段').AsFloat:=ADOQuery1.fields[5].AsFloat;
ADOQuery1.Next;
end;
ADODataSet1.Post;
Application.MessageBox('數據導入已完成!', '提示', MB_ICONINFORMATION);
edit2.Text:='';
finally
ADODataSet1.EnableControls;
END;
ADODataSet1.Close;
end;很麻烦,但是能实现导入的效果
你的那段在Delphi中使用ADO连接Excel (转载)很好,谢谢。
当连接Adoconnect2 的Adotable1 的属性 Active 设为ture 时就
出现不支持此接口
所以我的excel 数据都没能读到 delphi 的界面来.
select type2,type3 into a from OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;Database=c:\ee.xls', 'SELECT * FROM [sheet1$]') ,我试过了,但是跨机器我还没有试好,好像是要设置链接服务器。