線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3974
推到 Plurk!
推到 Facebook!

如何得知excel檔的最後一筆資料是在那一個行列?

答題得分者是:supman
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-01 14:13:07 IP:61.60.xxx.xxx 未訂閱
如何得知excel檔的最後一筆資料是在那一個行列
我這樣寫程式在讀到最後一行後會出現錯誤
Invalid Variant Operation
所以我想改成讀到最後一筆就不要再往下讀
但不知最後一筆的列數該如何取得      if opendialog1.Execute then begin
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.Visible := False;
    ExcelApp.WorkBooks.Open(opendialog1.FileName);
    name:= ExcelApp.Cells[5,1].Value;
    date:= ExcelApp.Cells[5,5].Value;
    try
      while ExcelApp.Cells[i,1].Value = name do begin
        do_something_here;
        i:= i   1;
      end;
    finally
      ExcelApp.Quit;
    end;
  end;
ANDY8C
資深會員


發表:114
回覆:582
積分:299
註冊:2006-10-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-01 18:42:32 IP:211.74.xxx.xxx 未訂閱
最後一筆??   最右一欄??  行/列常混淆??    以下是用 ADO 連上 EXCEL,判斷最後一筆即結束   希望能給您幫助    
while  not(Form.ADODataset1.eof )  do
begin      // ......資料處理        Form.ADODataset1.Next;    end; // while eof()
-------------------------------- 這一網站,真的不錯!!
------
---------------------------------------
偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩.
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-01 21:26:25 IP:219.68.xxx.xxx 未訂閱
判斷下一筆是否為空白就知道是否到最後一行了。 就算後面沒資料也是只會讀出空白,沒道理會出現錯誤。 i的初值要是1,不然會引發錯誤 i:=0; while (true) do begin inc(i);//先加1次變成1 S:=Excel.Cells[i,1]; if (S='') then break; end;
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-04 11:07:30 IP:61.60.xxx.xxx 未訂閱
我的最後一筆資料ExcelApp.Cells[40,1].Value 我用inspect下去看是 unassigned 而不是 空白 可能是因為這樣才會出現錯誤訊息 是否有解決方法
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-04 13:21:46 IP:219.68.xxx.xxx 未訂閱
S:=Excel.Cells[i,1]; 請用這樣把Excel資料丟到一個字串變數來判斷。 OleVariant的資料型態你用Inspect看到的一定是unassigned。 請先照我上面方式試。
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-10-25 13:27:55 IP:220.140.xxx.xxx 訂閱
請問一下喔。

如果用判斷下一個是否為空值的話,遇到下面那一個情況怎麼辦?

B50
50

這樣不會有問題嗎?

同樣遇到不知道要怎麼判斷最後一行及最後一列的人。
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-10-25 19:58:29 IP:122.116.xxx.xxx 未訂閱
您好,

請試一下

ExcelApp.worksheets[1].activate;
ExcelApp.worksheets[1].cells.SpecialCells(xlcelltypelastcell, emptyparam).activate;
exc_rows:=ExcelApp.activecell.row;


===================引 用 writeman 文 章===================
如何得知excel檔的最後一筆資料是在那一個行列
我這樣寫程式在讀到最後一行後會出現錯誤
Invalid Variant Operation
所以我想改成讀到最後一筆就不要再往下讀
但不知最後一筆的列數該如何取得      if opendialog1.Execute then begin
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.Visible := False;
    ExcelApp.WorkBooks.Open(opendialog1.FileName);
    name:= ExcelApp.Cells[5,1].Value;
    date:= ExcelApp.Cells[5,5].Value;
    try
      while ExcelApp.Cells[i,1].Value = name do begin
        do_something_here;
        i:= i   1;
      end;
    finally
      ExcelApp.Quit;
    end;
  end;
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
系統時間:2024-04-25 16:55:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!