直接向复杂的Python对象读取Excel单元格值,DataNitro

直接向复杂的Python对象读取Excel单元格值,DataNitro,python,excel,datanitro,Python,Excel,Datanitro,我正在开发一个程序,该程序允许我执行诊断并从包含数百张excel工作表的文件中提取数据。我正在使用DataNitro加载项 我的计划分为两个阶段: 阶段一:诊断:程序读取每张工作表上特定用户输入列中的每个单元格,并将字典和列表返回excel选项卡。列表的一个示例是:要提取的数据的起始/结束行。缺少或具有异常值等的表和观察列表。这些对象有两个目的:1)允许用户识别在提取数据之前应检查的值;2)描述每张表的数据结构 第一阶段:数据提取程序使用第一阶段中创建的对象,从各个工作表中提取数据,并将其编译到

我正在开发一个程序,该程序允许我执行诊断并从包含数百张excel工作表的文件中提取数据。我正在使用DataNitro加载项

我的计划分为两个阶段:

阶段一:诊断:程序读取每张工作表上特定用户输入列中的每个单元格,并将字典和列表返回excel选项卡。列表的一个示例是:要提取的数据的起始/结束行。缺少或具有异常值等的表和观察列表。这些对象有两个目的:1)允许用户识别在提取数据之前应检查的值;2)描述每张表的数据结构

第一阶段:数据提取程序使用第一阶段中创建的对象,从各个工作表中提取数据,并将其编译到新工作表中

这个程序运行得非常好,我能够非常快地提取数千个观察结果(当你知道我以前的工作是手工完成的!!!)

问题是:

为了实现第二阶段,它使用在第一阶段创建的对象。这意味着,一旦诊断阶段结束,并且用户已经迭代了足够的次数,直到用户满意数据已准备好提取为止,整个程序必须从头开始重新运行。这无疑是一种低效,尤其是在诊断阶段可能需要几分钟的时间。所以我想知道的是,是否有某种方法可以将单元格值中包含的列表读回python,作为它们想要的对象类型?如果有,我可以使用第一阶段中的对象作为它们在excel工作表中的显示,并将它们直接带到第二阶段,而无需重新运行第一阶段程序

例如:其中一个字典有一个表示页码的键,一个条目本身是一个字典列表,其中的键具有观察值,一个条目是一个列表,在该列表上可以找到观察值的行

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

在excel单元格中,它仅显示为字符串

如何将这种类型的复杂对象直接读回python


谢谢

您可以将字符串传递给
eval
函数,该函数将作为Python代码进行计算。例如,如果在名为“数据表”的工作表的单元格A1上有该字符串,则可以执行以下操作:

my_dict = eval(Cell("Data Sheet", "A1").value)
将词典加载回
my_dict

通常,在使用eval函数时应该小心,因为评估任意用户输入是一个安全漏洞。(例如,您不希望在网站上执行此操作。)但是,在这种情况下,用户可以编写和运行自己的代码,因此这不是问题