使用OpenXML,您可以使用类似于以下内容的内容在Excel文档中获取命名范围的列表:
IEnumerable<DefinedName> names = document
.WorkbookPart
.Workbook
.DefinedNames
.Cast<DefinedName>();
每个DefinedName
都有一个Text
属性,该属性定义了它所引用的范围,例如
Sheet1!$B$3:$D$8
然后我们可以解析并用于检索数据。到目前为止,至少我是这样理解的。
但是,在动态范围内,text属性可以包含如下内容:
OFFSET(Sheet1!$F$3,0,0,COUNTA(Sheet1!$F:$F),1)
这不是范围,它是一个返回范围的公式,这是我需要此公式的结果。
是否可以计算该公式,或者结果是否已经存储在电子表格中我可以读取的位置?还是可以通过其他方式读取动态命名范围?
这个问题专门关于OpenXML。我知道可以使用其他工具来完成。
答案 0 :(得分:0)
Excel定义名称实际上是命名公式,而不是命名范围。因此,您将需要诸如VBA评估之类的方法来将公式强制为范围或结果。
AFAIK OpenXML没有这种方法,因此您必须编写自己的公式解析器和评估器,或使用其他工具。