2015-04-08 3 views
1

Я пытаюсь читать формулы ячеек, в настоящее время я читаю все ячейки в листе, что занимает слишком много времени. Как я могу выбрать только те ячейки, которые имеют формулы.Получение клеток с формулами в файле Excel

Вот код, я использую

foreach (Excel.Worksheet workSht in xWorkBook.Worksheets) 
{ 
    for (int rCnt = 1; rCnt <= workSht .Rows.Count; rCnt++) 
    { 
     for (int cCnt = 1; cCnt <= workSht .Columns.Count; cCnt++) 
     { 
      string str = (string)(workSht.Cells[rCnt, cCnt] as Excel.Range).Formula; 
      if (str.Contains("_R*")) 
      { 
       if (File.Exists(excelFilePath)) 
       { 
        File.Delete(excelFilePath); 
       } 
       CloseExcelObject(ref xWorkBook, ref xApp); 
       return "UnReviewedFile"; 
      } 
     } 
    } 
} 
+0

Какой версия Excel? – MrDosu

+0

Сборки интроев Excel 2013 версии 15 –

+0

Не используйте для этого сборные блоки, используйте OOXML SDK. – MrDosu

ответ

2

В VBA вы можете выбрать все ячейки, содержащие формулы со следующим утверждением:

Sheet1.Cells.SpecialCells(xlCellTypeFormulas, 23).Select 

где Sheet1 является ссылкой на текущий лист и xlCellTypeFormulas = -4123

Это означает, что вы должны иметь возможность искать в ячейках формулы с чем-то вроде следующего кода (не тестировался):

foreach (Excel.Worksheet workSht in xWorkBook.Worksheets) 
{ 
    foreach (var cell in workSht.Cells.SpecialCells(-4123, 23)) { 
     // your code here 
    } 
}  
+0

У меня есть твоя идея, и с некоторыми изменениями она работала для меня ,,, –

0

хранение @ ответ Gedde в зрении я пытался получить специальные клетки, и она работала

Вот черт ...

foreach (var cell in workSht.Cells.SpecialCells(XlCellType.xlCellTypeFormulas, 23)) 
    { 
     str = (string)(cell as Excel.Range).Formula; 
    } 
Смежные вопросы