Компилирование таблицы Excel из нескольких листов в pycel - PullRequest
0 голосов
/ 29 апреля 2020

TL; DR - попытка скомпилировать эту многослойную электронную таблицу Pycel test / fixture (меня особенно интересует захват зависимостей между листами) с использованием в Python кода с использованием Pycel


Проблема

Полезный пример Pycel в примере / example.py в Pycel репозитории отлично работает и создает удобный граф .gexf, однако я не могу Выясните, как скомпилировать многолистовую электронную таблицу (в моем случае это ужасающая зависимость между листами!) с использованием Pycel.

@ Стивен Раух отметил, что «Pycel действительно работает с листами. Он работает с ячейками Эти ячейки могут быть взяты из любого листа в книге "в этом обсуждении Stackoverflow , однако я не смог найти подробностей об этом в репозитории Pycel или в предыдущих вопросах.


Что я пробовал

Я пытался скомпилировать электронную таблицу, включенную в tests / fixtures / excelcompiler.xlsx, так как это многолистовой формат, и он, кажется, компилируется только для Sheet1, как Sulting сюжет пуст (Sheet1 пуст).

import pycel
excel = pycel.ExcelCompiler('excelcompiler.xlsx')
excel.plot_graph()  

Можно ли использовать Pycel для компиляции зависимостей между листами?


В настоящее время я пытаюсь скомпилировать это Инструмент для работы с электронными таблицами Excel 1 в Python для целей моделирования 2 .

1 Подробнее см. Iri sh Национальная оценка энергетического рейтинга здания
2 Проведение в Дублине моделирования воздействия на энергию / углерод различных решений по строительной политике

1 Ответ

0 голосов
/ 05 мая 2020

TL; DR

Pycel легко компилирует электронные таблицы Excel на несколько листов. Функция Pycel pycel.ExcelCompiler ленива и поэтому фактически не компилирует Excel в Python до тех пор, пока явно не попросят сделать это через excel.evaluate('Result!E16')} (то есть оценить некоторую ячейку)


Подробнее

Я пытался:

excel = pycel.ExcelCompiler(filename='deap.xlsx')

# for viewing in gephi (quicker runtime)
excel.export_to_gexf('deap.gexf')

# or via matplotlib
excel.plot_graph()

И мой результат был пустой график.

Затем я попытался (как в примере на pycel ):

excel = pycel.ExcelCompiler(filename='deap.xlsx')

print(f"TotalDeliveredEnergy is {excel.evaluate('Result!E16')}")

# for viewing in gephi (quicker runtime)
excel.export_to_gexf('deap.gexf')

# or via matplotlib
excel.plot_graph()

И это сработало!

Другими словами, моя проблема заключалась в том, что я пытался построить отношение Pycel до того, как оно было оценено - Pycel ленив и поэтому компилирует Excel в Python только когда вызвано с excel.evaluate.

...