Python - проблемы с Pycel - PullRequest
       6

Python - проблемы с Pycel

1 голос
/ 23 февраля 2020

Я сделал pip-установку Pycel в conda.

Я выполняю это в Jupyter Notebook.

%matplotlib inline
from pycel import ExcelCompiler
from IPython.display import FileLink
import matplotlib.pyplot as plt

filename = "../python/pycel_files/example.xlsx"
print("Loading {}...".format(filename))

# load & compile the file to a graph
excel = ExcelCompiler(filename=filename)

# test evaluation
print("B1 is {}".format(excel.evaluate('Sheet1!B1')))
print("B2=(B1+5) is {}".format(excel.evaluate('Sheet1!B2')))

Вывод: Как и ожидалось

B1 is 10 B2=(B1+5) is 15

Однако, если я теперь сделаю это:

print("Setting B1 to 200")
excel.set_value('Sheet1!B1', 200)

print("B2 is now %s (the same should happen in Excel)" % excel.evaluate(
    'Sheet1!B2'))

Я получу ожидаемый результат в Jupyter:

Setting B1 to 200
B2 is now 205 (the same should happen in Excel)

Проблемы:

  1. Однако в Excel ячейка B1 не обновляется. Т.е. у него нет значения 200, которое якобы было установлено Pycel. Он по-прежнему показывает 10.
  2. Я столкнулся с той же проблемой в их примере github .ipynb из файла Pycel . Может ли кто-нибудь подтвердить, сталкиваются ли они также с той же проблемой, и это похоже на ошибку?
  3. Кроме того, если я внесу какие-либо изменения в их * Excel файл примера и использую их файл .ipynb, то ничего не показывает вверх в графах Matplotlib. Как Pycel узнает, какой лист выбрать? Всегда ли по умолчанию для sheet1?

1 Ответ

0 голосов
/ 23 февраля 2020

Таким образом, здесь есть недоразумение, что такое Pycel и что делает. Из Pycel Readme :

Pycel - это небольшая библиотека python, которая может преобразовывать электронную таблицу Excel в исполняемый код python, который можно запускать независимо от Excel. Код python основан на графике и использует кэширование и отложенную оценку для обеспечения (относительно) быстрого выполнения.

Итак, чтобы ответить на ваши вопросы:

Однако в Excel, ячейка B1 не обновляется.

Pycel не изменяет файл Excel. Он читает из файла Excel и создает «скомпилированную» электронную таблицу из нужных ячеек.

Если я внесу какие-либо изменения в их файл примера Excel и использую их файл .ipynb, на графиках matplotlib ничего не появится.

Вероятно, вам потребуется перекомпилировать электронную таблицу Excel, чтобы получить какие-либо результаты для отображения в коде Python.

Как Pycel узнает, какой лист выбирать из? Всегда ли по умолчанию sheet1?

Pycel действительно работает с листами. Работает с клетками. Эти ячейки могут быть из любого листа в рабочей книге.

...