难以获得两个细胞之间的距离

时间:2014-04-11 17:56:12

标签: c# excel

我正在尝试确定给定范围内的任何单元格是否具有公式。

我正在使用以下功能:

    public bool noFormulas(Excel.Worksheet dataSheet)
    {
        Excel.Range beginRange=dataSheet.Cells[3, beginColumn];
        Excel.Range endRange=dataSheet.Cells[lastRow, endColumn];

        Excel.Range fullRange = dataSheet.Cells[beginRange,endRange];
        return fullRange.HasFormula == false;
    }

我已经宣布互操作:

using Excel = Microsoft.Office.Interop.Excel;

问题在于,当执行分配fullRange的值的语句时,我得到了  这个例外:

An unhandled exception of type 'System.Runtime.InteropServices.COMException'
occurred in mscorlib.dll
Additional information: Exception from HRESULT: 0x800A03EC

beginRangeendRange都已成功填充;我不应该根据其开始和结束单元获得范围吗?

1 个答案:

答案 0 :(得分:1)

作为评论的后续内容,您应该更改

dataSheet.Cells[beginRange,endRange];

dataSheet.Range[beginRange,endRange];

另外fullRange.HasFormula你应该遍历每个单元格并检查它的任何是否具有公式(因为在原始代码中它会检查所有单元格范围是否具有公式,并且当您同时具有公式且没有公式的单元格时,fullRange.HasFormula抛出异常)。所以,工作代码是:

public bool noFormulas(Excel.Worksheet dataSheet)
{
   Excel.Range beginRange = dataSheet.Cells[3, beginColumn];
   Excel.Range endRange = dataSheet.Cells[lastRow, endColumn];

   Excel.Range fullRange = dataSheet.Range[beginRange, endRange];

   foreach (Excel.Range c in fullRange) 
   {
      if (c.HasFormula)
      {
         return false;
      }
   }
   return true;
}