将多个sheetExcelSpreadsheet编译成pycel

Compiling a multiple sheet Excel Spreadsheet into pycel

TL;DR - 尝试使用 Pycel

编译 this multi-sheet Pycel tests/fixture spreadsheet(我对捕获 sheet 间依赖关系特别感兴趣)到 Python 代码中

问题

Pycel repository 中的 example/example.py 中有用的 Pycel 示例运行完美并生成方便的 .gexf 图,但是,我无法弄清楚如何编译多 sheet Spreadsheet(在我的用例中,sheet 之间存在可怕的依赖关系!)使用 Pycel。

@Stephen Rauch 在 this Whosebug discussion 中提到 "Pycel does really deal with sheets. It works with cells. Those cells can come from any sheet in the workbook",但是,我在 Pycel 存储库或之前的问题中找不到任何关于此的详细信息。


我试过的

我尝试编译包含在 tests/fixtures/excelcompiler.xlsx 中的 spreadsheet 因为这是 multi-sheet 并且它似乎只针对 Sheet1 编译,因为结果图是空的(Sheet1是空的)。

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

是否可以使用Pycel编译sheet之间的依赖关系?


我目前正在尝试将此 Excel spreadsheet tool1 编译成 Python 用于建模目的2

1 有关更多详细信息,请参阅 The Irish National Building Energy Rating Assessment
2 运行 不同建筑政策决策 energy/carbon 影响的都柏林范围模拟

TL;DR

Pycel 可以轻松编译多sheet Excel 传播sheet。 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 =14=].