我是菜鸟!!!我用delphi编了一段代码,怎么也不能将excel中的内容导入到数据库中。。。。。。。
运行时没有错误!请高手指教!!!procedureread_XLS_sy(filename:string);varexcelapp:OleVariant;exceldoc...
运行时没有错误!请高手指教!!!
procedure read_XLS_sy(filename:string);
var
excelapp:OleVariant ;
exceldoc:OleVariant;
config_index,row,TuHao,i:integer;
configfile:tstringlist;
config_str,instring,T_Konghao:string;
VarStr:Variant;
bookmark1:pointer;
begin
if not fileexists(filename) then exit;
excelapp:=GetexcelObject();
exceldoc:=excelapp.WorkBooks.open(filename);
ins:=false;
configfile:=tstringlist.Create;
configfile.LoadFromFile(sysdir+'\system\config.ini');
config_index:=strtoint(configfile.Strings[0]);
if config_index<configfile.Count then config_str:=configfile.Strings[config_index] else exit;
ins:=false;
try
labDlg.Label1.Caption:='正在读取试验数据...';
labDlg.Caption:='导入试验数据';
labdlg.ProgressBar1.Position:=1;
labdlg.ProgressBar1.Min:=1;
labdlg.ProgressBar1.Max:=exceldoc.worksheets[1].UsedRange.Cells.Rows.Count;
labdlg.Show;
labdlg.ProgressBar1.Visible:=true;
dm1.KongXin.DisableControls ;
bookmark1:=dm1.KongXin.GetBookmark ;
shuru.Refresh ;
TuHao:=1;
row:=1;
while row< exceldoc.worksheets[1].UsedRange.Rows.Count do
begin
labDlg.Label1.Refresh ;
labdlg.ProgressBar1.StepIt;
config_str:=configfile.Strings[config_index];
if (VarType(exceldoc.worksheets[1].cells[row,1].value)=0) or (VarType(exceldoc.worksheets[1].cells[row,1].value)>5) then
begin
inc(row);
continue;
end;
instring:='' ;
for i:=1 to 40 do
begin
VarStr:=exceldoc.worksheets[1].cells[row,i].value;
if VarType(VarStr)=8 then instring:=instring+VarStr+#9
else
if VarType(VarStr)=5 then instring:=instring+floattostr(VarStr)+#9
else instring:=instring+#9;
end;
Read_sy(config_str,instring,TuHao,T_Konghao) ;
inc(TuHao);
inc(row);
end;
except
ins:=true;
if dm1.shiyan.state in [dsedit,dsinsert] then dm1.shiyan.cancel;
dm1.KongXin.GotoBookmark(bookmark1) ;
dm1.KongXin.freeBookmark(bookmark1) ;
dm1.KongXin.EnableControls;
ins:=true;
configfile.free;
if excelapp.Visible then exceldoc.close else excelapp.Quit;
labdlg.Close ;
exit;
end;
ins:=true;
dm1.KongXin.GotoBookmark(bookmark1) ;
dm1.KongXin.freeBookmark(bookmark1) ;
dm1.KongXin.EnableControls;
ins:=true;
if excelapp.Visible then exceldoc.close else excelapp.Quit;
labdlg.Close ;
configfile.free;
end;
你有相关的导入到数据库中的实际代码吗? 展开
procedure read_XLS_sy(filename:string);
var
excelapp:OleVariant ;
exceldoc:OleVariant;
config_index,row,TuHao,i:integer;
configfile:tstringlist;
config_str,instring,T_Konghao:string;
VarStr:Variant;
bookmark1:pointer;
begin
if not fileexists(filename) then exit;
excelapp:=GetexcelObject();
exceldoc:=excelapp.WorkBooks.open(filename);
ins:=false;
configfile:=tstringlist.Create;
configfile.LoadFromFile(sysdir+'\system\config.ini');
config_index:=strtoint(configfile.Strings[0]);
if config_index<configfile.Count then config_str:=configfile.Strings[config_index] else exit;
ins:=false;
try
labDlg.Label1.Caption:='正在读取试验数据...';
labDlg.Caption:='导入试验数据';
labdlg.ProgressBar1.Position:=1;
labdlg.ProgressBar1.Min:=1;
labdlg.ProgressBar1.Max:=exceldoc.worksheets[1].UsedRange.Cells.Rows.Count;
labdlg.Show;
labdlg.ProgressBar1.Visible:=true;
dm1.KongXin.DisableControls ;
bookmark1:=dm1.KongXin.GetBookmark ;
shuru.Refresh ;
TuHao:=1;
row:=1;
while row< exceldoc.worksheets[1].UsedRange.Rows.Count do
begin
labDlg.Label1.Refresh ;
labdlg.ProgressBar1.StepIt;
config_str:=configfile.Strings[config_index];
if (VarType(exceldoc.worksheets[1].cells[row,1].value)=0) or (VarType(exceldoc.worksheets[1].cells[row,1].value)>5) then
begin
inc(row);
continue;
end;
instring:='' ;
for i:=1 to 40 do
begin
VarStr:=exceldoc.worksheets[1].cells[row,i].value;
if VarType(VarStr)=8 then instring:=instring+VarStr+#9
else
if VarType(VarStr)=5 then instring:=instring+floattostr(VarStr)+#9
else instring:=instring+#9;
end;
Read_sy(config_str,instring,TuHao,T_Konghao) ;
inc(TuHao);
inc(row);
end;
except
ins:=true;
if dm1.shiyan.state in [dsedit,dsinsert] then dm1.shiyan.cancel;
dm1.KongXin.GotoBookmark(bookmark1) ;
dm1.KongXin.freeBookmark(bookmark1) ;
dm1.KongXin.EnableControls;
ins:=true;
configfile.free;
if excelapp.Visible then exceldoc.close else excelapp.Quit;
labdlg.Close ;
exit;
end;
ins:=true;
dm1.KongXin.GotoBookmark(bookmark1) ;
dm1.KongXin.freeBookmark(bookmark1) ;
dm1.KongXin.EnableControls;
ins:=true;
if excelapp.Visible then exceldoc.close else excelapp.Quit;
labdlg.Close ;
configfile.free;
end;
你有相关的导入到数据库中的实际代码吗? 展开
展开全部
这段代码中只有读Excel文件的功能,没有存入数据库的功能,所以你就不能将其内容导入到数据库中了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你需要 ADOConnect,连接Database,
ADOQuery q,
然后 q.open;
q.insert;
q.fieldbyname('xxx').asString := 'xxx1';
q.fieldbyname('yyy').asString := 'yyy1';
...
q.post;
q.close;
ADOQuery q,
然后 q.open;
q.insert;
q.fieldbyname('xxx').asString := 'xxx1';
q.fieldbyname('yyy').asString := 'yyy1';
...
q.post;
q.close;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
读取的同时,添加数据库写入的功能即可。
你这个只是读取,而无法写入啊
你这个只是读取,而无法写入啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询