2012-11-02 50 views
0

好吧查找行,所以我有一個非常大的Excel工作表中,我需要找到一個行文本的指定的字符串。這張紙的大小約爲10,000行。我目前正在做這樣的事情:與指定的文本快速

sheet = workbook.ActiveSheet; 

    // FIND the tape id in column: __________ 
     int cellRow = 0; 
     int x = 0; 
     for (x = 1; x <= 1000000; x++) 
     { 
      if (sheet.Cells[43][x].text.Contains(tapeID)) 
      { 
       cellRow = x; 
       break; 
      } 
     } 

問題是,這會持續相當一段時間....因此,我的需求太慢了。我試圖做sheet.find()方法,但是它返回了一大堆錯誤的單元格.....有人可以幫我實現sheet.find,或者告訴我一個更快的方法來做到這一點?

我實現了找到這樣:

 sheet = workbook.ActiveSheet; 
      Microsoft.Office.Interop.Excel.Range currentFind = currentFind = sheet.Cells.Find(tapeID, Type.Missing, 
    Microsoft.Office.Interop.Excel.XlFindLookIn.xlValues, Microsoft.Office.Interop.Excel.XlLookAt.xlPart, 
    Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, false, 
    Type.Missing, Type.Missing); 

但是,當我看到裏面什麼用 字符串值= currentFind [0] [0]。文本

我得到錯誤的小區... .. does excel在這裏使用零地址?...去調​​查

+0

sheet.find()返回了什麼? 'tapeID'有什麼價值? – Holf

+0

我編輯了你的標題。請參見「[應的問題包括‘標籤’,在他們的頭銜?(http://meta.stackexchange.com/questions/19190/)」,這裏的共識是「不,他們不應該」。 –

+1

答案是它不使用0尋址。如果我使用[1] [1]作爲索引數組,它會返回正確的單元格。感謝耐心 – Mizmor

回答

0

由於這是令人沮喪,我只是使用錯誤的索引尋找函數。我對此感到有點慚愧,所以我們會忘記它發生了。

Cheers