如何读取Excel中的最新数据? ( 积分: 100 )

  • 主题发起人 主题发起人 wwdelphi
  • 开始时间 开始时间
W

wwdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我是做实验的,对Delphi很不专业。
在采集数据的过程中,希望能够采集到Excel表格中的“最新”数据。
编写了以下程序:
procedure TForm1.bsSkinButton34Click(Sender: TObject);//读取Excel中最新的数
Var
i:integer;
begin
for i:=1 to 35001 do
if ExcelID.Cells[i,1].Value='' then
bsskinstringgrid2.Cells[1,1]:=ExcelID.Cells[i-1,i].Value;
end;
但是,程序返回错误,说string和double的问题,小弟不明,望高手指教。谢谢!
 
if VarIsStr(ExcelID.Cells[i,1].Value)='' then
bsskinstringgrid2.Cells[1,1]:=ExcelID.Cells[i-1,i].Value;

Value要判断值是什么类型的。
 
刚刚看了一下,有个isnull函数好像可以判断是否为空字符串?
 
谢谢piggoal,我按照您说的写的,但是说string和boolean不匹配?
 
我用了一种比较笨的办法,先把excel里面的数导到edit上,然后用edit判断,可以用。
Var
i:integer;
col:string;
begin
for i:=1 to 4 do
begin
bsskinedit4.Text:=ExcelID.Cells[i,1].Value;
col:=inttostr(i);
if bsskinedit4.Text='' then showmessage(col)
else showmessage('no null!');
end;
//bsskinstringgrid2.Cells[1,1]:=ExcelID.Cells[4,1].Value;
但是还有一个问题,for语句要从头到尾循环一遍,我希望找到空的值之后就跳出循环,如何实现呢?
 
恩,用了break就可以实现循环的中断了
Var
i:integer;
col:string;
begin
for i:=1 to 4 do
begin
bsskinedit4.Text:=ExcelID.Cells[i,1].Value;
col:=inttostr(i);
showmessage(col);
if bsskinedit4.Text='' then break;
end;
//bsskinstringgrid2.Cells[1,1]:=ExcelID.Cells[4,1].Value;
end;
 
恩,最终版出来了
Var
i:integer;
begin
for i:=1 to 4 do
begin
bsskinedit4.Text:=ExcelID.Cells[i,1].Value;
if bsskinedit4.Text='' then break;
end;
bsskinstringgrid2.Cells[1,1]:=ExcelID.Cells[i-1,1].Value;
end;
可以实现了,谢谢piggoal给我的启发:)
 
后退
顶部