怎样控制导入数据的循环!!(50分)

  • 主题发起人 主题发起人 萍儿
  • 开始时间 开始时间

萍儿

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
try
datamodule2.Table1.Active:=false;
datamodule2.Table1.TableName:=form1.ComboBox1.Text;
datamodule2.Table1.Active:=true;
for i :=1 to 3 do
begin
datamodule2.Table1.Last;
datamodule2.Table1.Insert;
for j:=1 to 2 do
begin
datamodule2.Table1.Fields[j-1].AsString:=form1.ExcelWorksheet1.Cells.item[i,j];
end;
datamodule2.Table1.Post;
end;
application.MessageBox('数据导入完毕!','提示信息',1);
form1.Edit2.Text:=ExcelWorksheet1.Cells.item[2,1];
form1.Edit3.Text:=ExcelWorksheet1.Cells.item[2,2];
except
application.MessageBox('程序出错!','提示信息',1);
end;
end;

以上是我做的从EXCEL表中导入到系统中的一段循环代码!j代表EXCEL的行,而i代表EXCEL
的列!问题如下:(1)表中的数据有多少条不确定,所以我只能输入一个足够大的值,
但是这样的话速度太慢,请问怎么假如一个判断,当EXCEL表中的数据为空时,就结束该
循环!!(2)能否对行和列的值变为一个变量,让它自己去辨认到底有多少行和列!

在此先说声谢谢!!
 
对dephi下的excel知之甚少,建议找是否有一判断excel行列数的函数
 
>>2)能否对行和列的值变为一个变量,让它自己去辨认到底有多少行和列!
如果知道行和列,则
for i:=1 to maxint do
begin
...
...
if i>yourrow//行 then
break;
...

end;
 
对不起,我不知道!
 
试试看
sheet1.UsedRange.Rows.Count
sheet1.UsedRange.Cols.Count
不过由于如果sheet1是空的,返回的值为行数为1,列数为1,所以你还要判断一下(例如看看
cells.item[1,1]是否为空.
具体情况要看你的sheet中数据是如何存放的.

 
我也做过类似的
我的判断方法是某一行,第一列的数据如果为空则认为导入结束
所以我是导入一行后,判断下一行第一列是否为空,不是则导入
你可以在Excel中第一列加入序号,导入时不需要倒入第一列就行了

我们让企业准备基础数据时,都提供标准的Excel格式
 
我也不清楚。
 
ExcelWorksheet1.Cells.Columns.Count
ExcelWorksheet1.Cells.rows.Count
ExcelWorksheet1.Columns.Count
ExcelWorksheet1.Rows.Count
都不行吗
 
ExcelWorksheet1.Cells.Columns.Count
ExcelWorksheet1.Cells.rows.Count
ExcelWorksheet1.Columns.Count
ExcelWorksheet1.Rows.Count

这样好象无法识别那些是没有数据的行,只要进行了编辑它都算!!



 
你导入数据库的那个xls文件应该和客户有一个约定吧.
指定一个标准,在xls文件的某个地方存储相应信息.
 
多人接受答案了。
 
后退
顶部