Можно ли читать динамические именованные диапазоны в Excel, используя OpenXML? - PullRequest
0 голосов
/ 23 января 2019

Используя 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. Я знаю, что это можно сделать с помощью других инструментов.

1 Ответ

0 голосов
/ 23 января 2019

Определенные в Excel имена - это действительно именованные формулы, а не именованные диапазоны.Таким образом, вам потребуется такой метод, как VBA Evaluate, чтобы привести формулу к диапазону или результату.

AFAIK OpenXML не имеет такого метода, поэтому вам придется написать собственный синтаксический анализатор и оценщик формул или использовать какой-либо другой инструмент.

...