在Excel文件中获取具有公式的单元格

时间:2015-04-08 06:36:16

标签: c# vsto import-from-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";
            }
        }
    }
}

2 个答案:

答案 0 :(得分:5)

在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
    }  
}     

答案 1 :(得分:0)

保持@Gedde的答案,我试图获得特殊细胞并且它有效

这是魔鬼......

foreach (var cell in workSht.Cells.SpecialCells(XlCellType.xlCellTypeFormulas, 23))
     {
      str = (string)(cell as Excel.Range).Formula;
     }