直接读取Excel单元格值到复杂的Python Obects,DataNitro

我正在研究一个程序,该程序允许我执行诊断并从包含数百个Excel表的文件中提取数据。 我正在使用DataNitro添加。

我的程序有两个阶段:

阶段1:诊断:程序读取每张纸上某些用户input列中的每个单元格,并将字典和列表返回到Excel选项卡中。 列表的一个例子是:开始/结束要提取的数据的行。 这些对象有两个目的:1)允许用户识别在提取数据之前应该检查的值; 2)描述每张表的数据结构。

第二阶段:数据提取程序使用第一阶段创build的对象,从各个工作表中提取数据,并在新工作表上进行编译。

该程序奇妙地工作,我可以非常迅速地提取数以千计的观察结果(当你知道我的工作以前的任职是手工做的!!!)。

所以这里是一个问题:

为了使第二阶段发生,它使用第一阶段创build的对象。 这意味着,一旦诊断阶段结束,用户重复了足够的次数,直到数据准备好被提取为止,整个程序必须从头再次运行。 这肯定是效率低下,尤其是诊断阶段可能需要几分钟的时间。 所以我想知道的是,是否有一些方法来读取单元格值中包含的列表回到python作为他们打算的对象types? 如果有的话,我可以使用阶段I中的对象,就像他们出现在Excel表格中一样,直接将它们带到阶段II,而不必重新运行阶段I程序。

例如:其中一个词典有一个代表纸张编号的键和一个本身是具有观察值键的词典列表的条目,该条目是可以find观察的行的列表。

{'Sheet1':[{'OBSERVATION4':[12,13,14]},{'OBSERVATION12':[29,31,35]}],'Sheet12':[{'OBSERVATION7':[6,7, 9]},{'OBSERVATION18':[40,44,48]}]}

在Excel单元格中,这只是显示为一个string。

我怎样才能读这种复杂的对象直接回到python?

谢谢

您可以将string传递给eval函数,该函数将评估为Python代码。 例如,如果您在名为“数据表”的工作表的单元格A1上具有该string,则可以执行此操作

 my_dict = eval(Cell("Data Sheet", "A1").value) 

将字典加载回my_dict

一般来说,使用eval函数时应该小心,因为评估任意用户input是一个安全漏洞。 (例如,你不想在网站上做这件事。)在这种情况下,用户可以编写和运行他们自己的代码,所以这不是问题。