在前台将不同的Excel表导入到后台SQL Server数据库中相应--疑惑,如何实现!?(50分)

  • 主题发起人 主题发起人 zhaojimanghuang
  • 开始时间 开始时间
Z

zhaojimanghuang

Unregistered / Unconfirmed
GUEST, unregistred user!
很头疼于如何能实现让用户在前台将不同的Excel表导入到后台SQL Server数据库中相应
可选择的表中
因为从来没有进行过这种设计,而且时间特别的赶,所以请指教.
数据库中是有8张基表以供数据导入的,导入的Excel模板设计是与数据库表中前几项的数
据类型和排列是一致的.
可以让用户选择Excel表,然后选择相应数据库的表--执行导入


 
没准可以用Sql的dts自动做,试试看能不能满足你的要求
 
如果是现成的Excel表,这个转换工作应有你来完成,没错吧!
以后 用户还是照旧用Excel录入数据的话,那你给他做的系统又是用来干什么用的?
 
系统的前台和后台数据库都已经作好了的
主要功能是分析和换算
导入数据库是这个系统的后来的追加功能

DTS的导入是个什么实现思想?
 
Data Transformation Service 能很方便的成批转移数据
 
想在前台实现一个可以让用户选择Excel表,然后导入数据库中相应表的功能

我用一个OpenDialog来确定我想打开哪一个Excel表

用如此语句却:
procedure TForm1.Button1Click(Sender: TObject);
var fName:variant;

begin
ExApp:=CreateOleObject('Excel.Application');
Exapp.visible:=true;
ExWB:=ExApp.WorkBooks.Open(fName);
ExSheet:=ExWB.ActiveSheet;
showmessage(ExSheet.Cells[1,1].value);//
ExWB.close;
Exapp.quit;


ExSheet:=unassigned;
ExWB:=unassigned;
ExApp:=unassigned;

显示出了一个Excel空白窗口

如果我在这个Excel窗口中打开了我想选择导入的表
我要如何在Delphi又实现将他导入固定的库呢?
我这个打开的Excel表如何和我的Delphi前台连接诶呢?

**其实我是想实现:::选择一个Excel表,然后确定一个ADOTable和他连接,
然后用RadioGroup确定一个数据库里的表,用这类语句直接将他的每一列和每一行的数据都导入数据库相应被选择的表中
For i:=0 adptable1.fieldcount-1 do
adotable2.field.value:=adotable1.field.value

我不知道该如何去实现了
请高手门教一下吧!!!!!!!!!
 
如果你在星期六下午还没有搞定的话发EMail给我帮你搞定
jw_yan@163.com
 
qq74:
非常感谢,但是今天下午不可以吗??
 抱歉我很着急
 
if opendialog1.excute then
begin
ExApp:=CreateOleObject('Excel.Application');
Exapp.visible:=true; <----可删
ExWB:=ExApp.WorkBooks.Open(opendialog1.filename); <----改!
...
 
dlnew:
   你的意思是直接在通过如上程序打开的Excel表中打开要导入的Excel表
然后Excel不用在作什么执行操作,直接在另一个Button中执行导入语句即:
if opendialog1.excute then
begin
ExApp:=CreateOleObject('Excel.Application');
Exapp.visible:=true; <----可删
ExWB:=ExApp.WorkBooks.Open(opendialog1.filename); <----改!
...
是这个意思吗?
 
dlnew:
不好意思
我看岔了
那我如何把它和ADOTable的执行导入语句联系起来呢???
 
j := 1;
while trim(ExApp.WorkBooks.worksheets[1].cells[j, 1] <> '') do
begin
adotable2.edit;
For i:=0 adptable2.fieldcount-1 do
adotable2.field.value:=ExApp.WorkBooks.worksheets[1].cells[j, i];
adotable2.post;
j := j + 1;
end;
//前提:1、打开的EXCEL文件的第一列是没有空值的。但可以根据你的实际情况改。
// 2、cells[]的顺序和table的fields[]的顺序相同,否则可以用数组等方法来调整。
 
dlnew:
我试验一下
 
十分关注
 
多人接受答案了。
 
后退
顶部