Функция pycel NPV не работает, когда пройден диапазон денежных потоков - PullRequest
0 голосов
/ 18 февраля 2020

Что на самом деле произошло

У меня есть файл Excel (назовите его «test.xlsx») со следующим макетом:

Sheet1!A1 -> =NPV(0.1,B1:C1)
Sheet1!B1 -> 10
Sheet1!C1 -> 20

Я пытаюсь оценить ячейку Sheet1! A1 с следующий код в test.py

from pycel import ExcelCompiler
excel = ExcelCompiler(filename="test.xlsx")
print("A1 is %s" % excel.evaluate('Sheet1!A1'))
excel.set_value('Sheet1!B1', 200)
print('A1 is now %s' % excel.evaluate('Sheet1!A1'))

Это приводит к ошибке значения, которая, как я считаю, вызвана передачей диапазона вместо списка ячеек, разделенных запятыми:

env ❯ python test.py
A1 is 25.6198347107438
A1 is now #VALUE!

То, что ожидалось

Я ожидаю, что это вычислит A1 до 198.347 и выдаст следующий консольный журнал:

env ❯ python test.py
A1 is 25.6198347107438
A1 is now 198.3471074380165

Если я изменю формулу в ячейке A1 на = NPV (0.1, B1, C1 ) это действительно правильно оценивает

Среда

env ❯ pip freeze --local
decorator==4.4.1
et-xmlfile==1.0.1
jdcal==1.4.1
networkx==2.4
numpy==1.18.1
openpyxl==3.0.3
pycel==1.0b22
python-dateutil==2.8.1
ruamel.yaml==0.16.10
ruamel.yaml.clib==0.2.0
six==1.14.0
env ❯ python -V
Python 3.7.5
>>> import platform
>>> platform.platform()
Darwin-19.3.0-x86_64-i386-64bit'
...