全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2806
推到 Plurk!
推到 Facebook!

用OLE 的方式判斷Excel 內的cell是否有值

尚未結案
LLP
一般會員


發表:3
回覆:8
積分:2
註冊:2004-12-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-16 00:11:21 IP:220.139.xxx.xxx 未訂閱
請教各位前輩, 如何用OLE 的方式, 判斷Excel 內cell的值是空的或是有直存在? 例如: 欲判斷cell[3,3]是否有值,若無則在此cell填入值, 若有值便 在cell[3,4]填入值.... 部之各位大大可否幫個忙?? 謝謝!!!
supman
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-16 00:51:39 IP:219.68.xxx.xxx 未訂閱
要判斷有沒有值沒辦法直接判斷,因為他是OleVariant Type,您必須要先將他等於到某個字串變數中再進行判斷才可以。
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-16 01:31:49 IP:221.169.xxx.xxx 未訂閱
LLP:補supman版大的話:
if (OpenDialog1->Execute())  {
          AnsiString FileName= OpenDialog1->FileName;
    AnsiString buffer;
    int Column_=0,Row_=0;
    Variant FExcel;
          Variant FWorkBooks;
          Variant FWorkBook;
          Variant FWorkSheet;
          Variant FCells;
          Variant FCell;
    Variant FColumns;
    Variant Data_;
    try    {
      FExcel = CreateOleObject("Excel.Application");
      FExcel.OlePropertySet("Visible", false);
      FWorkBooks = FExcel.OlePropertyGet("Workbooks");
      FWorkBooks.OleFunction("Open",WideString(FileName));
      FWorkBook = FWorkBooks.OlePropertyGet("Item",1);
      FWorkSheet = FWorkBook.OlePropertyGet("Sheets",1);
      FCells = FWorkSheet.OlePropertyGet("Cells");
      FCell = FCells.OlePropertyGet("SpecialCells",11);
      FCell.OlePropertyGet("Activate");
      FColumns = FExcel.OlePropertyGet("ActiveCell");
      Column_ = FColumns.OlePropertyGet("Column");
      Row_ = FColumns.OlePropertyGet("Row");
      for (int k = 1 ; k <= Row_ ; k  )      {
        for (int i = 1 ; i <= Column_ ; i  )        {
          FCell = FCells.OlePropertyGet("Cells",k,i);   // Row,Column
          Data_ = FCell.OlePropertyGet("Value");
          // Data_.Type(); 
          buffer= (AnsiString) Data_;
          if (buffer.IsEmpty())
                  // 空值
          else
                  // 有值
          Application->ProcessMessages();
        }
      }
    }
    __finally    {
      FExcel.OlePropertySet("DisplayAlerts",false);
      FExcel.OleFunction("Quit");
    }
    FExcel = Unassigned;
    FWorkBooks = Unassigned;
          FWorkBook = Unassigned;
          FWorkSheet = Unassigned;
          FCells = Unassigned;
          FCell = Unassigned;
    FColumns = Unassigned;
    Data_ = Unassigned;
  }
}    注意紅字部分就是supman版大所言
要判斷有沒有值沒辦法直接判斷,因為他是OleVariant Type,您必須要先將他等於到某個字串變數中再進行判斷才可以。
請參考!
Andy Chang
------
Andy Chang
LLP
一般會員


發表:3
回覆:8
積分:2
註冊:2004-12-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-16 10:41:25 IP:210.80.xxx.xxx 未訂閱
Thanks for Supman & andychang1690大大. 請問 andychang1690大大 FCell = FCells.OlePropertyGet("SpecialCells",11); 此行為何意義?? 再請問以ROW為主若要將指標指向next Cell要如何表示??? 謝謝!!!
supman
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-16 13:38:06 IP:61.70.xxx.xxx 未訂閱
您好: 1. FCell = FCells.OlePropertyGet("SpecialCells",11); 這一個我沒用過不曉得他的功能,現在沒BCB沒辦法實測 2. FCell = FCells.OlePropertyGet("Cells",Row,Col); // Row,Column Data_ = FCell.OlePropertyGet("Value"); 如果Row為1,改為2就是下一個Row了.
LLP
一般會員


發表:3
回覆:8
積分:2
註冊:2004-12-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-16 18:20:27 IP:211.21.xxx.xxx 未訂閱
謝謝supman & andychang1690大大的指導, 小妹我已能成功的判定CELL內是否有值了. 謝謝!!!
系統時間:2024-05-07 0:32:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!