需求是这样的,Excel中有两张Sheet(“原始数据”和“最终结果”),“最终结果”这个sheet展示“原始数据”经过公式加工后的结果。
在程序中将Excel载进来,通过更新“原始数据”使“最终结果”自动完成计算,计算完成后,从“最终结果”中取出数据展示到界面。
现在的问题是如何获取被计算的单元格集合,因为每次只更新“原始数据”中的一部分单元格数据,因此“最终结果”中也只是一部分单元格被重新计算。
查了下MSDN,发现Worksheet中有两个事件Change 和Calculate,Change事件是在 Worksheet 单元格中的某些内容发生更改时发生,但是当单元格在重新计算的过程中发生更改时,不发生此事件。而Calculate事件是在重新计算工作表之后发生,但是该事件没有任何事件参数指示到底是哪些单元格被重新计算,示例如下。
private void WorksheetCalculate()
{
this.Calculate += new
Excel.DocEvents_CalculateEventHandler(
Worksheet1_Calculate);
}
void Worksheet1_Calculate()
{
MessageBox.Show(this.Name + " is being calculated");
}
该如何获取Excel中被计算的单元格集合呢?