在获取两个单元格之间的范围时遇到困难
本文关键字:范围 遇到 之间 单元格 获取 两个 | 更新日期: 2023-09-27 17:58:07
我正在尝试确定给定范围内的任何单元格是否有公式。
我正在使用以下功能:
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;
}
其中我声明了interop:
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
CCD_ 2和CCD_;我不应该根据它的起始单元格和结束单元格来获得一个范围吗?
作为评论的后续内容,您应该更改
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;
}