请问把Excel导入到数据库的时候,如何判断Excel的结束行数?里面的记录是不固定的(30分)

  • 主题发起人 主题发起人 天邪狼
  • 开始时间 开始时间

天邪狼

Unregistered / Unconfirmed
GUEST, unregistred user!
请问把Excel导入到数据库的时候,如何判断Excel的结束行数?里面的记录是不固定的
 
好像没什么好的办法.可不可以给每行一个判断为空的条件.用一个记数变量,如果为空就加1,反之等于0;如果连续空行50行就跳出循环,计算出最后一行值....
 
这个方法好像行不通啊!看的以往的帖子,从数据库导入到Excel的例子居多,从Excel到SQL数据库的很少,即使有都没有判断Excel的结束行,都是写死在里面的,如:
for i:=2 to 10 do
begin
ADOQuery1.Insert;
ADOQuery1.FieldByName('用户名').AsString:=sheet1.cells.item[i,1].value;
ADOQuery1.FieldByName('密码').AsString:=sheet1.cells.item[i,2].value;
ADOQuery1.Post;
end;
万一我的excel记录只有2行,那岂不是在SQL里插入了8条空记录?期待高手的方法!
 
试试以下代码:
function GetExcelRowCount(AFile, ATable: string): integer;
var
ADataSet: TADODataSet;
S: string;
begin
S := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+AFile
+';Extended Properties=Excel 8.0;Persist Security Info=False';
ADataSet := TADODataSet.Create(Self);
try
ADataSet.ConnectionString := S;
ADataSet.Active := False;
ADataSet.CommandText := 'SELECT count(*) FROM [' + ATable + ']';
ADataSet.Active := True;
Result := ADataSet.Fields[0].AsInteger;
finally
ADataSet.Free;
end;
end;

ATable就是你Excel中的Sheet,如Sheet1
 
我在别的帖子里找到答案了,用的是什么VBA的帮助,具体为什么那么写,我还不清楚,只是复制了过来就找到最后的行数了,而且非常简单,只要2句.http://www.delphibbs.com/delphibbs/dispq.asp?lid=759711,"海之豚"写的非常独到 .不过,protossgffnxk,还是很感谢你来关注我这个问题,分还是给你.
 
天邪狼-----散财童子!
 
后退
顶部