在这种情况下我的Excel Range.OutlineLevel为空或System.DBNull?

在我的VSTO加载项代码中,我有一个range.outlinelevel检查我的工作表行。 根据文档大纲级别可能是1到8,并且是Variant / Doubletypes。

  1. 但是有时候返回null
  2. 和其他时间range.OutlineLevel.GetType()返回DBNull

有人知道为什么/当这种情况?


一个相关的post: https : //stackoverflow.com/questions/27778183/fastest-way-to-get-the-highest-range-outlinelevel-in-an-excel-worksheet

(1)我仍然没有答案。 但今天我find了答案(2):

如果给定范围中有多个大纲级别,range.OutlineLevel.GetType()将返回DBNull。

请参阅下面的debugging器输出:

  • 正常行的标准OutlineLevel是1.0:

    range.OutlineLevel 1.0 dynamic {double} 
  • 对于具有不同OutlineLevels的多行,结果是:

     range.OutlineLevel {} dynamic {System.DBNull}