Что я делаю: добавил пользовательскую функцию во время выполнения EPPlus.Эта функция принимает текстовое выражение в качестве аргумента (конечно, текстовое выражение может быть указано в качестве аргумента или может быть помещено в какую-то ячейку таблицы, на которую мы ссылаемся). Пока все хорошо,
, тогда мы оценим этовыражение вне Excel / EPPlus - выражения могут обращаться к данным за пределами электронной таблицы, НО ТАКЖЕ могут ссылаться на другие ячейки электронной таблицы.
И существует проблема со ссылкой на электронную таблицу - EPPlus не имеет представления о том, что находится в этих выражениях ичто будет результатом их оценки, также не знает, относятся ли они к другим ячейкам, которые могут быть или не быть уже рассчитаны.Итак - нет контроля зависимостей и возможного беспорядка.
Вопрос: это можно исправить?Я имею в виду, когда функция оценки выражения обнаруживает, что выражение относится к ячейке электронной таблицы, может ли она сказать EPPlus сначала выполнить оценку этой ячейки?Или, по крайней мере, проанализируйте выражение и определите, каковы зависимости, затем передайте эту информацию как-нибудь EPPlus, чтобы он знал, в каком порядке выполнять вычисления?
=MYEVAL("doSomeStuff('arg 1', Sheet.E4, Sheet.C4)")
MYEVAL собираетсябыть запущенным во время вызова Worksheet.Calculate () - но внутри MYEVAL, как сообщить EPPlus, что мы хотим получить текущее значение ячеек E4 и C4, если эти ячейки вычисляются сами и могут изменять свое значение во время вычисления?
Меня не волнуют циклические ссылки, я могу убедиться, что циклов нет, просто прямой случай выполнения вычислений в правильном порядке.
Обновление: просто интересно, можем ли мы добавить любое числоаргументов для вызова, можем ли мы просто поместить наши зависимости в список аргументов, например:
=MYEVAL("doSomeStuff('arg 1', Sheet.E4, Sheet.C4)";E4;C4)
Тогда EPPlus будет знать, что перед вызовом MYEVAL необходимо вычислить E4 и C4клетки.Этого достаточно для обеспечения таких зависимостей?